Programmez par plaisir! 30-07-2010
03:44
Prog-Info > C++ > Tri et Recherche > Le tri bulle. Sommaire

Le tri à bulle

Cet algorithme consiste à comparer les différentes valeurs adjacentes d'un tableau. Les éléments 0 et 1 sont comparés. Si le premier est supérieur au second, on effectue une permutation. Ensuite on fait de même avec les éléments 1 et 2, 2 et 3, etc... Dans cette étape, il y a n-1 tests et on est sûr que le plus grand élément se trouve à la fin du tableau. Il reste à traiter les n-1 premiers éléments.
L'algorithme se termine lorsqu'il n'y a plus de permutations possibles.
Le pire des cas est lorsque le tableau est classé par ordre décroissant.

void triABulle(int tableau[], int longueur)
{
   int i;
   bool permutation;

   do
   {
      permutation = false;
      for(i=0; i<longueur-1; i++)
      {
         if(tableau[i]>tableau[i+1])
         {
            echanger(tableau, i, i+1);
            permutation = true;
         }
      }
      longueur--;
   }
   while(permutation);
}

Exemple :
Les différentes étapes de l'algorithme :

730 196
370 196
307 196
301 796
301 796
301 769
031 769
013 769
013 769
013 679

Complexité :
Calculons le nombre de passages dans le pire des cas : (n-1)+(n-2)+ ... +2+1 = n*n/2 - n/2.
Si le tableau est déjà bien trié, cela ne prendra pas beaucoup de temps.

La fonction échanger Le tri par sélection
[Plan Plan] [A propos A Propos] [ 661229 ]
Copyright ©2002-2009 Prog-info Tous droits réservés.