알고리즘 > 정렬 > 퀵정렬


기준 값을 중심으로 작은값은 왼쪽 큰 값은 오른쪽으로 분할하여 정렬하는 방식.

기준 값 (Pivot)값과 left, Right 값을 정하고 Left는 왼쪽에서부터 Pivot보다 큰값이 나올때까지 오른쪽으로 이동,

                                                             Right는 오른쪽에서부터 Pivot보다 작은 값이 나올때까지 왼쪽으로 이동.

두 값을 교환하며 이동하다가 Left와 Right 값이 만나면 Pivot과 교환.






제일 오른쪽 항목을 PIVOT으로 설정하고 LEFT를 왼쪽부터 오른쪽으로 RIGHT를 오른쪽부터 왼쪽으로 이동하면서 

PIVOT인 5보타 큰 LEFT 30으로 LEFT를 설정하고 5보다 작은 3을 RIGHT로 설정. 두 값을 교환한다. 

그리고 LEFT와 RIGHT를 계속해서 이동하여 만나는 값과 PIVOT값을 교환.

결과는 PIVOT과 교환한 값을 기준으로 왼쪽은 PIVOT보다 작은 값, 오른쪽은 PIVOT보다 큰 값으로 정렬된다. 

3은 비교할 값이 없으므로 고정되고 세번째 원소부터 마지막 원소까지 다시한번 PIVOT을 정하고 정렬을 시작한다. 




다시한번 17보다 큰 30이 LEFT, 17보다 작은 9가 RIGHT가 되고 두 원소가 바뀜.

그리고 LEFT와 RIGHT가 만나는 30과 PIVOT의 위치가 바뀌고 

정렬은 17을 기준으로 왼쪽인 11, 9 / 오른쪽인 28, 29, 35, 26, 30 으로 나뉨.





오른쪽 정렬을 다시 피벗을 기준으로 퀵정렬 실행. 





완료! 


n개의 원소에 대하여 n개의 메모리 사용

평균 시간 복잡도 : 

                            





'ALGORITHM' 카테고리의 다른 글

Sort - Bubble Sort (버블정렬)  (0) 2012.12.21
Sort - Insertion Sort (삽입정렬)  (0) 2012.12.21
Sort - Selection Sort (선택정렬)  (0) 2012.12.21

+ Recent posts