진짜 개발자
본문 바로가기

CS(Computer Science)/알고리즘

JAVA 퀵정렬(Quick Sort)이란 - 수정중

728x90

https://www.youtube.com/watch?v=7BDzle2n47c&t=303s


과정

1. 배열에서 적절한 피봇을 선출한다

- 배열에서 값이 중간값일 수록 좋지만 중간값을 찾기위해서는 탐색을 해야하므로 물리적으로 중간에 위치한 값을 피봇으로 선택


2. 배열의 시작위치의 인덱스를 L로 지정하고 배열의 끝 위치의 인덱스를 R로 지정한다


3. L은 피봇값보다 작은값(L < Pivot)은 무시하며 인덱스를 1씩 증가시킨다

(계속해서 증가하다가 Pivot의 위치에 다달으면 Pivot값보다 작은값이 아니므로 피봇의 위치에서 멈추게 된다)


4. R은 피봇값보다 큰값(R > Pivot)은 무시하며 인덱스를 1씩 감소시킨다

(계속해서 감소하다가 Pivot의 위치에 다달으면 Pivot값보다 큰값이 아니므로 피봇의 위치에서 멈추게 된다)


5. Swap

1) L과 R이 모두 무시하지 못한채로 멈춘경우 L과 R을 서로 Swap한 다음 L과 R의 인덱스를 1씩 증감 시킨다

2) 둘중 한쪽이 Pivot에 멈춰있고 둘중 한쪽이 값을 찾아 멈춰있는 경우 Pivot과 값을 바꾼다

3) 모두 정렬되어 있을 경우 Pivot의 위치에서 L과 R이 만난다


6. L의 인덱스가 R의 인덱스보다 작을때 까지만 위의 과정을 반복한다.