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

06-5  셸 정렬









                         셸 정렬은 단순 삽입 정렬의 장점은 살리고 단점은 보완하여 좀 더 빠르게 정렬하는 알고리즘
                        입니다.




                        단순 삽입 정렬의 특징
                        다음 배열에서 단순 삽입 정렬을 수행한다고 가정합니다.

                                                1    2   3    4   5    0   6


                        2, 3, …, 5의 순서대로 선택하며 정렬합니다. 여기까지는 이미 정렬을 마친 상태이기 때문에

                        요소의 이동(대입)은 발생하지 않습니다. 그래서 5까지의 정렬은 빨리 마칠 수 있습니다. 그러
                        나 0을 삽입하려면 그림 6-14처럼 총 6회에 걸쳐 요소를 이동해야 합니다.



                                                          1   2   3    4    5   0    6
                         ①~⑤ …    0보다 작은 요소를 만날 때까지 왼                     ①
                              쪽 요소를 하나씩 대입하는 작업을
                              반복합니다.                      1   2   3    4    5   5    6
                         ⑥    … 멈춘 위치에서 0을 대입합니다.                     ②
                                                          1   2   3    4    4   5    6
                                                                 ③
                                                          1   2   3    3    4   5    6
                                                            ④
                                                          1   2   2    3    4   5    6
                                                        ⑤
                                                          0   1   2    3    4   5    6
                                                        ⑥
                                         [그림 6-14] 단순 삽입 정렬에서 요소 0의 이동 과정


                        다음은 단순 삽입 정렬의 특징을 정리한 것입니다.


                         ⓐ 정렬을 마쳤거나 정렬을 마친 상태에 가까우면 정렬 속도가 매우 빨라집니다. (장점)
                         ⓑ 삽입할 위치가 멀리 떨어져 있으면 이동(대입)해야 하는 횟수가 많아집니다. (단점)






                                                                                          06•정렬  217
   212   213   214   215   216   217   218   219   220   221   222