L'idée de base de l'algorithme de tri Hill est la suivante : prenez d'abord un entier d1 inférieur à n comme premier incrément et divisez tous les enregistrements du fichier en groupes d1. Tous les enregistrements dont la distance est un multiple de dl sont placés dans le même groupe. Effectuez d'abord un tri par insertion directe dans chaque groupe ; puis prenez le deuxième incrément d2<d1 et répétez le regroupement et le tri ci-dessus jusqu'à ce que l'incrément dt=1(dt<dt-l<…<d2<d1 ), c'est-à-dire jusqu'à ce que tous les enregistrements sont placés dans le même groupe pour un tri par insertion directe. Cette méthode est essentiellement une méthode d’insertion groupée.
//Tri par insertion avec incrément public static void shellSort(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);//Échanger j et jh } else break;
Diagramme schématique du tri Hill
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à tout le monde de maîtriser le tri Java Hill.