Algorithme (partiel) du tri par sélection

Corps de l'algorithme simplifié:
  • Traiter chaque élément (d'indice indCourant) du tableau du premier jusqu'à l'avant dernier élement :
    • trouver le plus petit élément de indCourant jusqu'à la fin du tableau.
    • l'inverser avec l'élement de indCourant
Variables en entrée:
      int tailleTab=10;
      int tab[tailleTab]=
{45,25,3,122,345,12,26,89,1,7};  /* le tableau est entièrement initialisé */
      int nbEffectif=10;
Variables auxiliaires:
      int indCourant;  
/* indice compteur de l'itérative de premier niveau */
      int indMini;        /* indice de l'élément minimum */
      int elemTemp;    /* variable intermédiaire nécessaire pour l'échange entre lélément minimum et l'indice courant */
      int ind;               /* indice compteur de l'itérative de second niveau (imbriquée) */

Corps de l'algorithme détaillé:
  indCourant=0;                        
/* initialisation de l'indice de la première itérative */
  while (indCourant < (nbEffectif-2))     /* de 0 à 8  pour un tableau de 10 éléments 8 est bien l'avant dernier */
   {
       ind = indCourant;            
/* initialisation de l'indice de la seconde itérative */
       indMini = ind;  
/* on initialise le minimum au premier élément */
       while (ind < (tailleTab - 1))         /* on parcours le tableau jusqu'au dernier élément */
         {
            if (tab[ind] <  tab[indMini] )  /* on a trouvé un plus petit élément */
               indMini = ind;        
/* il devient le nouveau minimum */
            ind = ind +1;
          };  
/* fin du while (ind < (tailleTab - 1)) */
       elemTemp = tab[indMini];   /* on commence l'échange avec la variable auxiliaire */
       tab[indMini] = tab[indCourant];
       tab[indCourant] = elemTemp;  
/* l'inversion est terminée */
       indCourant = indCourant + 1;    /* on passe au suivant pour trier le reste du tableau */
  }  
/* fin du while (indCourant < (tailleTab - 2) */

for (ind=0; ind<nbEffectif; i++)
     afficher(" ", tab[ind]);
/* afficher les éléments  du tableau */
suivant         plan