셀 정렬은 삽입정렬이 이미 정렬된 상태에서 정렬을 수행할 경우 속도가 우수하다는 근거를 기반으로 개발이 되었다 삽입정렬을 수행하기 전 일정 간격을 기준으로 배열의 엔티티를 묶고 삽입정렬을 수행한다 해당 간격에 대해 정렬이 완료되면 간격의 크기를 줄여가며 반복하고 어느정도 정렬이 완료되었다 판단되면 간격 기준 삽입정렬이 아닌 전체 삽입정렬로 정렬을 완료한다 일정 간격의 크기는 Gap이라고 부르며 연구 결과를 토대로 말하면 대체로 홀수의 간격을 가지는게 좋다
Gap Size Example : 1, 4, 10, 23, 57, 132, 301, 701, 1750
동작 원리
오름차순 정렬 기준
Gap의 크기를 결정한다
Gap의 크기를 기준으로 삽입 정렬을 수행한다 예를들어 Gap의 크기가 3이라고 가정하고 배열의 전체 크기가 10일 때 묶음으로 가져지는 배열은 다음과 같다 List 1 : Array[0], Array[3], Array[6], Array[9] List 2 : Array[1], Array[4], Array[7] List 3 : Array[2], Array[5], Array[8]