La idea básica del algoritmo de clasificación de Hill es: primero tome un número entero d1 menor que n como primer incremento y divida todos los registros del archivo en grupos d1. Todos los registros cuya distancia sea múltiplo de dl se colocan en el mismo grupo. Primero realice la clasificación por inserción directa dentro de cada grupo; luego, tome el segundo incremento d2<d1 y repita la agrupación y clasificación anteriores hasta el incremento dt=1(dt<dt-l<…<d2<d1), es decir, hasta que todos Los registros se colocan en el mismo grupo para la clasificación por inserción directa. Este método es esencialmente un método de inserción agrupada.
// Ordenación por inserción con incremento public static void shellSort(int[] array) { int len = array.length; int h = 1; while (h < len) h = h * 3 + 1; 1) { para (int i = 1; i < len; i++) { para (int j = i; j >= h; j = j - h) { if (matriz[j] < matriz[j - h]) { Sort.swap(array, j, j - h);// Intercambiar j y jh } else break;
Diagrama esquemático de la clasificación Hill
Lo anterior es el contenido completo de este artículo. Espero que sea útil para todos dominar la clasificación de Java Hill.