Сортировка Шелла в Java: сортировка массива с использованием алгоритма сортировки Шелла

Вот пример алгоритма Shell Sort, реализованного на Java:

public class ShellSort {
    public static void shellSort(int[] array) {
        int n = array.length;

        // Start with a large gap, then reduce the gap
        for (int gap = n / 2; gap > 0; gap /= 2) {

            // Perform insertion sort on subarrays defined by the gap
            for (int i = gap; i < n; i++) {
                int temp = array[i];
                int j;

                for (j = i; j >= gap && array[j - gap] > temp; j -= gap) {
                    array[j] = array[j - gap];
                }

                array[j] = temp;
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {9, 5, 1, 8, 3, 7, 4, 6, 2};

        System.out.println("Array before sorting:");
        for (int num : array) {
            System.out.print(num + " ");
        }

        shellSort(array);

        System.out.println("\nArray after sorting:");
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}

Эта реализация использует алгоритм Shell Sort для сортировки массива целых чисел. Функция shellSortпринимает массив в качестве входных данных и изменяет его на месте.

Алгоритм работает путем разделения массива на подмассивы и выполнения сортировки вставками в этих подмассивах. Размер подмассивов изначально установлен равным n/2, где n— длина массива. Затем разрыв уменьшается на каждой итерации, пока не станет равным 1, после чего алгоритм выполняет окончательную сортировку вставкой для полной сортировки массива.