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

셸 정렬

                   셸 정렬(shell sort)은 단순 삽입 정렬의 장점(ⓐ)은 살리고 단점(ⓑ)은 보완한 정렬 알고리즘으
                   로, 도널드 셸(D. L. Shell)이 고안했습니다. 먼저 정렬할 배열의 요소를 그룹으로 나눠 각 그룹
                   별로 단순 삽입 정렬을 수행하고, 그 그룹을 합치면서 정렬을 반복하여 요소의 이동 횟수를

                   줄이는 방법입니다.
                      다음 절에서 살펴볼 퀵 정렬이 고안되기 전까지는 가장 빠른 알고리즘으로 알려져 있었습니다.


                   그림 6-15의 배열을 예로 들어 알고리즘을 살펴보겠습니다. 먼저 배열을 4개의 그룹({8, 7},
                   {1, 6}, {4, 3}, {2, 5})으로 나누고 각 그룹별로 정렬합니다. ①은 {8, 7}을 정렬하여 {7, 8}로, ②는

                   {1, 6}을 정렬하여 {1, 6}으로, ③은 {4, 3}을 정렬하여 {3, 4}로, ④는 {2, 5}를 정렬하여 {2, 5}
                   로 정렬된 상태입니다.


                   이렇게 4칸만큼 떨어진 요소를 모아 그룹을 4개로 나누어 정렬하는 방법을 ‘4–정렬’이라고

                   합니다. 아직 정렬을 마친 상태는 아니지만 정렬을 마친 상태에 가까워집니다.


                                             8   1    4   2    7   6    3    5

                                       ①     8   1    4   2    7   6    3    5
                                                              4칸만큼 떨어진 2개의 요소를 정렬
                                             7   1    4   2    8   6    3    5


                                       ②
                                             7   1    4   2    8   6    3    5
                                                              4칸만큼 떨어진 2개의 요소를 정렬
                                             7   1    4   2    8   6    3    5


                                       ③
                                             7   1    4   2    8   6    3    5
                                                              4칸만큼 떨어진 2개의 요소를 정렬
                                             7   1    3   2    8   6    4    5


                                       ④
                                             7   1    3   2    8   6    4    5
                                                              4칸만큼 떨어진 2개의 요소를 정렬
                                             7   1    3   2    8   6    4    5


                     정렬을 마치지는 않았지만 정렬을       7   1    3   2    8   6    4    5
                     마친 상태에 가까워집니다.

                                           [그림 6-15] 셸 정렬의 4–정렬





                   218   C 알고리즘
   213   214   215   216   217   218   219   220   221   222   223