아래 내용은 부스트코스 <자바로 구현하고 배우는 자료구조> 강의를 들으며 정리한 것입니다.
셸 정렬 (Shell sort)
삽입 정렬을 약간 변형한 정렬. 일정한 너비만큼 떨어진 요소를 가져와서 그 둘을 대소비교한 후 바꾸는 방법이다. (일정 너비만큼 모두 바꾸면 1round) 간격의 크기를 점점 줄이며 정렬하다 간격 크기가 1이 되면 삽입 정렬을 한다. 요소의 이동 횟수를 줄이는 데 의의가 있다. 즉, 거의 정렬된 상태로 만들어 삽입 정렬을 하는 경우 시간 복잡도가 크게 줄어드는 것을 활용하는 방식이다.

셸 정렬은 리스트 안에서 순서만 바꾸기 때문에 in-place 정렬이며, 중복된 숫자의 순서가 보장되지 않는 불안정 정렬이다.
셸 정렬의 평균적인 시간 복잡도는 사용하는 간격의 크기에 따라 바뀌는데, O(n^5/4) 혹은 O(n^3/2)가 된다. Worst case에서 셸 정렬은 기본적으로 삽입 정렬과 같으므로 O(n^2)에 가까워진다.
셸 정렬은 구현이 까다롭고 갭 시퀀스에 영향을 많이 받는다는 점이 단점이다. 효율적인 셸 정렬의 Best gap sequence에 대해 연구한 결과들을 많이 살펴볼 수 있다.
Shellsort - Wikipedia
From Wikipedia, the free encyclopedia Jump to navigation Jump to search Sorting algorithm which uses multiple comparison intervals Swapping pairs of items in successive steps of Shellsort with gaps 5, 3, 1 Shellsort, also known as Shell sort or Shell's met
en.wikipedia.org
'Programming > java 자료구조' 카테고리의 다른 글
| 8-5) 퀵 정렬 - 퀵 정렬이란, worst case, 코드 구현 (1) | 2022.09.30 |
|---|---|
| 8-4) 정렬 - 합병 정렬 (0) | 2022.09.24 |
| 8-2) 정렬 - 삽입 정렬 (0) | 2022.09.24 |
| 8-1) 정렬 - 종류, 선택 정렬 (0) | 2022.09.24 |
| 7-2) RB(Red Black Tree) - rotate 메소드, 좌측 회전, 좌-우 회전, 높이, 검은색 노드 개수 (0) | 2022.09.17 |