Вот пример алгоритма 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, после чего алгоритм выполняет окончательную сортировку вставкой для полной сортировки массива.