//******************************************* //* TRI PAR LA METHODE DE S H E L L * //******************************************* public class Trishell { public static void TRI_SHELL (Comparable VECTEUR []) { int incr = VECTEUR.length; // suite des increments degressifs. int inf = 0, V_last=incr-1; Comparable L_element; int k; // corps du tri: while (incr > 1) { if (incr < 5) incr=1; else incr= (5*incr-1) / 11; // Invariant de la boucle L: // Les INCR sous_files imbriquees de VECTEUR (inf:L-1) // sont ordonnees. for (int L = inf+incr; L <= V_last; L++) { L_element= VECTEUR [L]; // sauvegarde. // Recherche sequentielle retrograde de la place // de L_ELEMENT, et decalage en parallele: for (k = L-incr; k >= inf; k-=incr) { if (L_element.compareTo(VECTEUR [k]) <= 0) VECTEUR [k+incr]= VECTEUR [k]; else break; // fin du decalage. } // k. VECTEUR [k+incr]=L_element; // insertion. } // L. } // incr. } }