Une classe Java solution du problème :Le sous programme Java implantant l'algorithme de tri par insertion
Une classe complète permettant l'exécution du sous-programme précédent :
class ApplicationTriBulle {
static int[] table = new int[20] ; // le tableau à trier : 20 éléments
static void AfficherTable ( ) {
// Affichage du tableau
int n = table.length-1;
for ( int i = 0; i <= n; i++)
System.out.print(table[i]+" , ");
System.out.println();
}static void InitTable ( ) {
// remplissage aléatoire du tableau
int n = table.length-1;
for ( int i = 1; i <= n ; i++)
table[i] = (int)(Math.random()*100);
table[0] = -Integer.MAX_VALUE; //sentinelle à l'indice 0
}static void main(String[ ] args) {
InitTable ( );
System.out.println("Tableau initial :");
AfficherTable ( );
TriInsert ( );
System.out.println("Tableau une fois trié :");
AfficherTable ( );
}}
static void TriInsert ( ) {
// sous-programme de Tri par insertion : on trie les éléments du n°1 au n°19
int n = table.length-1;
for ( int i = 2; i <= n; i++)
{ // la partie non encore triée (ai, ai+1, ... , an)
int v = table[i]; // l'élément frontière : ai
int j = i; // le rang de l'élément frontière
while (table[ j-1 ] > v)
{ //on travaille sur la partie déjà triée (a1, a2, ... , ai)
table[ j ] = table[ j-1 ]; // on décale l'élément
j = j-1; // on passe au rang précédent
}
table[ j ] = v ; //on recopie ai dans la place libérée
}
}Image en diagrammes structurés JGrasp-Like du programme
informations sur les diagrammesSource recopiable (cliquez sur le lien)
Tableau initial :
-2147483647 , 2 , 54 , 95 , 45 , 51 , 1 , 29 , 67 , 40 , 4 , 28 , 12 , 25 , 90 , 36 , 85 , 39 , 62 , 3Tableau une fois trié :
-2147483647 , 1 , 2 , 3 , 4 , 12 , 25 , 28 , 29 , 36 , 39 , 40 , 45 , 51 , 54 , 62 , 67 , 85 , 90 , 95