Page 224 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 224

06-6  퀵 정렬









                   퀵 정렬은 가장 빠른 정렬 알고리즘 중의 하나로 널리 사용되고 있습니다.



                   퀵 정렬 살펴보기

                   퀵 정렬(quick sort)은 일반적으로 사용되고 있는 아주 빠른 정렬 알고리즘입니다. 퀵 정렬이라
                   는 이름은 이 알고리즘의 정렬 속도가 매우 빠른 데서 착안한 찰스 앤터니 리처드 호어(C. A.

                   R. Hoare)가 직접 붙인 이름입니다. 그림 6-19는 이 알고리즘으로 학생 수가 8명인 그룹을 키
                   순서대로 정렬한 모습을 나타낸 것입니다. 먼저 어느 한 사람의 키를 선택합니다. 키가
                   168cm인 학생 A를 선택할 경우 그 학생을 기준으로 학생 A의 키보다 작은 사람의 그룹과 큰
                   사람의 그룹으로 나눕니다. 이때 이 학생 A를(그룹을 나누는 기준) 피벗(pivot)이라고 합니다. 퀵

                   정렬은 각 그룹에 대해 피벗 설정과 그룹 나눔을 반복하며 모든 그룹이 1명이 되면 정렬을 마
                   칩니다.                        피벗은 마음대로 선택할 수 있습니다. 또한 이 피벗을 어느 하나의 그룹에 포함시
                                             키고자 할 경우 왼쪽 그룹과 오른쪽 그룹 어디에 들어가도 상관없습니다.


                   퀵 정렬 알고리즘의 개념을 살펴봤으니 이제 좀 더 자세한 내용을 알아보겠습니다.


                                                               학생 A
                        피벗…그룹을 나누는 기준

                                                    175  170  160  168  165  170  155  150
                                              키가 168 이하인 그룹                키가 168 이상인 그룹



                                               160  165  155  150       175  170  168  170

                                            155 이하          155 이상   170 이하          170 이상



                                             155  150     160  165    170  168    170  175






                                            150   155   160    165   168   170   170    175

                                                [그림 6-19] 퀵 정렬 과정
                   224   C 알고리즘
   219   220   221   222   223   224   225   226   227   228   229