Traduction en C#
Tri par insertion
Une classe C# solution du problème :

Le sous programme C# implantant l'algorithme de tri par insertion sur le tableau 'table' :
 
 static void TriInsert ( ) {
   // sous-programme de Tri par insertion 
        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
        }
}

 

Une classe complète permettant l'exécution du sous-programme précédent :
 
using System;
namespace CsExosAlgo1
{
class ApplicationTriInsert {
 

static int[] table ; // le tableau à trier, par exemple 19 éléments
  /* Tri avec sentinelle :
   * dans la cellule de rang 0 se trouve une sentinelle (Int32.MinValue)
   * 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.
   */
    static void AfficherTable ( ) {
     // Affichage du tableau 
        int n = table.Length-1;
        for ( int i = 1; i <= n; i++) 
            System.Console.Write (table[i]+" , ");
         System.Console.WriteLine ( );
    }

     static void InitTable  ( ) 
    { // sentinelle dans la cellule de rang zéro
        int[ ] tableau = { Int32.MinValue ,25, 7 , 14 , 26 , 25 , 53 , 74 , 99 , 24 , 98 , 
                                  89 , 35 , 59 , 38 , 56 , 58 , 36 , 91 , 52 };
        table = tableau;
    }

 static void Main(string[ ] args) {
         InitTable ( );
         System.Console.WriteLine ("Tableau initial :");
         AfficherTable ( );
         TriInsert  ( );
         System.Console.WriteLine ("Tableau une fois trié :");
        AfficherTable ( );
        System.Console.Read();
  }

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
        }
  }
 }
}

Source recopiable (cliquez sur le lien)
 
 

Tableau initial :
25 , 7 , 14 , 26 , 25 , 53 , 74 , 99 , 24 , 98 , 89 , 35 , 59 , 38 , 56 , 58 , 36 , 91 , 52

Tableau une fois trié :
7 , 14 , 24 , 25 , 25 , 26 , 35 , 36 , 38 , 52 , 53 , 56 , 58 , 59 , 74 , 89 , 91 , 98 , 99
 
 

Remonter