Objectif : Ecrire un programme C# implémentant l'algorithme du tri par insertion.
Spécifications de l’algorithme :
Algorithme Tri_Insertion
local: i , j , n, v Î Entiers naturels
Entrée : Tab Î Tableau d'Entiers naturels de 0 à n éléments
Sortie : Tab Î Tableau d'Entiers naturels de 0 à n éléments
{ dans la cellule de rang 0 se trouve une sentinelle chargée d'éviter de tester dans la boucle tantque .. faire si l'indice j n'est pas inférieur à 1, elle aura une valeur inférieure à toute valeur possible de la liste
}
début
pour i de2 jusquà n faire// la partie non encore triée (ai, ai+1, ... , an)
v ¬ Tab[ i ] ; // l'élément frontière : ai
j ¬ i ; // le rang de l'élément frontière
Tantque Tab[ j-1 ] > v faire//on travaille sur la partie déjà triée (a1, a2, ... , ai)
Tab[ j ] ¬ Tab[ j-1 ]; // on décale l'élément
j ¬ j-1; // on passe au rang précédent
FinTant ;
Tab[ j ] ¬ v //on recopie ai dans la place libérée
fpour
Fin Tri_InsertionProposition de squelette de classe C# à implanter :
class ApplicationTriInsert
{static int[] table; // le tableau à trier
static void AfficherTable ( )
{ // Affichage du tableau
........
}static void InitTable ( )
{ // Initialisation du tableau
.........
}static void TriInsert ( )
{ // sous-programme de Tri par insertion
.........
}static void Main(string[ ] args)
{
InitTable ( );
System.Console.WriteLine("Tableau initial :");
AfficherTable ( );
TriInsert ( );
System.Console.WriteLine("Tableau une fois trié :");
AfficherTable ( );
System.Console.Read();
}
}
}