A ideia básica do algoritmo de classificação de Hill é: primeiro pegue um número inteiro d1 menor que n como o primeiro incremento e divida todos os registros do arquivo em grupos d1. Todos os registros cuja distância é múltiplo de dl são colocados no mesmo grupo. Primeiro realize a ordenação por inserção direta dentro de cada grupo, depois pegue o segundo incremento d2<d1 e repita o agrupamento e ordenação acima até o incremento dt=1(dt<dt-l<…<d2<d1 ), ou seja, até todos; os registros são colocados no mesmo grupo para classificação por inserção direta. Este método é essencialmente um método de inserção agrupada.
//Classificação de inserção com incremento public static void shellSort(int[] array) { int len = array.length; while (h < len) h = h * 3 + 1 while (h >= 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);//Troca j e jh } else break;
Diagrama esquemático da classificação de Hill
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para todos dominarem a classificação Java Hill.