[java] 자바에서 쉘 정렬 구현하기

쉘 정렬(Shell sort)은 삽입 정렬의 개선된 버전으로, 배열을 일정한 간격으로 나누어 부분 리스트를 만든 후, 각 부분 리스트를 삽입 정렬하는 방식으로 정렬 알고리즘입니다. 이를 통해 삽입 정렬보다 빠른 정렬 속도를 가지고 있습니다.

쉘 정렬 구현하기

public class ShellSort {
    public void shellSort(int[] arr) {
        int n = arr.length;
        for (int gap = n / 2; gap > 0; gap /= 2) {
            for (int i = gap; i < n; i++) {
                int key = arr[i];
                int j = i;
                while (j >= gap && arr[j - gap] > key) {
                    arr[j] = arr[j - gap];
                    j -= gap;
                }
                arr[j] = key;
            }
        }
    }
}

쉘 정렬 코드 설명

위의 코드는 쉘 정렬을 구현한 예시입니다.

위의 코드는 오름차순으로 정렬하는 예시이며, 내림차순으로 정렬하고 싶다면 arr[j - gap] < key와 같이 부등호의 방향을 바꿔주면 됩니다.

참고 자료