쉘 정렬
삽입 정렬을 이용하여 배열 뒷부분의 작은 숫자를 앞부분으로 빠르게 이동시키고, 동시에 앞부분의 큰 숫자는 뒷부분으로 빠르게 이동시키는 정렬 알고리즘
간격(gap)을 이용
30 60 90 10 40 80 40 20 10 60 50 30 40 90 80
◼ 간격(gap)이 5인 숫자 그룹
그룹1 : [30, 80, 50]
그룹2 : [60, 40, 30]
그룹3 : [90, 20, 40]
그룹4 : [10, 10, 90]
그룹5 : [40, 60, 80]
각 그룹 별로 삽입 정렬 수행
▶ 30 30 20 10 40 50 40 40 10 60 80 60 90 90 80
처음보다 비교적 큰 숫자가 뒷부분으로, 작은 숫자가 앞부분으로 이동
그 다음에는 간격을 전에 설정한 것보다 작게 하여 다시 그룹별 삽입 정렬 수행
◼ 간격(gap)이 3인 숫자 그룹
그룹1 : [30, 10, 40, 60, 90]
그룹2 : [30, 40, 40, 80, 90]
그룹3 : [20, 50, 10, 60, 80]
각 그룹 별로 삽입 정렬 수행
그룹1 : [10, 30, 40, 60, 90]
그룹2 : [30, 40, 40, 80, 90]
그룹3 : [10, 20, 50, 60, 80]
▶ 10, 30, 10, 30, 40, 20, 40, 40, 50, 60, 80, 60, 90, 90, 80
마지막에는 반드시 간격을 1로 놓고 삽입 정렬 수행 (그룹별로 서로 비교되지 않는 숫자가 없도록 함)
(삽입정렬 그자체)
◼ 간격(gap)이 1일 때
▶ 10, 10, 20, 30, 30, 40, 40, 40, 50, 60, 60, 80, 80 ,90, 90
'파이썬 알고리즘 > 정렬 알고리즘' 카테고리의 다른 글
기수 정렬 (Radix Sort) (0) | 2023.06.06 |
---|---|
힙 정렬 (Heap Sort) (0) | 2023.05.31 |