Основная идея алгоритма сортировки Хилла такова: сначала в качестве первого приращения взять целое число d1 меньше n и разделить все записи в файле на группы d1. Все записи, расстояние которых кратно dl, помещаются в одну группу. Сначала выполните сортировку прямой вставкой внутри каждой группы, затем возьмите второе приращение d2<d1 и повторите описанную выше группировку и сортировку до тех пор, пока приращение dt=1(dt<dt-l<…<d2<d1 ), то есть до тех пор, пока все записи помещаются в одну группу для сортировки прямой вставкой. По сути, этот метод представляет собой метод групповой вставки.
//Сортировка вставкой с приращением public static voidshellSort(int[] array) { int len = array.length; int h = 1; while (h < len) h = h * 3 + 1; 1) { for (int i = 1; i < len; i++) { for (int j = i; j >= h; j = j - h) { if (array[j] < array[j - h]) { Sort.swap(array, j, j - h);//Поменять местами j и jh } elsebreak; } } h = h / } };
Принципиальная схема сортировки по холму
Выше приведено все содержание этой статьи. Я надеюсь, что она будет полезна каждому, кто освоит сортировку Java Hill.