Lycée Pilote de Sousse 2011/2012
Page 1 sur 2
Tri à Bulles
Cet algorithme compare les éléments du tableau deux à deux, jusqu'à obtenir un tableau trié.
Dans ce cas la répétition de plusieurs passages sur l'ensemble des données est nécessaire
pour l'obtention d'un tri complet. Cette méthode est appelée le tri à bulles, car les éléments
mal classés remontent dans la liste comme des bulles à la surface d'un liquide.
L'algorithme parcourt le tableau, et compare les couples d'éléments successifs (t[i] et t[i+1]).
Lorsque deux éléments successifs ne sont pas dans l'ordre croissant, ils sont échangés.
A la fin de la première boucle, t[n] contient le plus grand élément du vecteur et cette nième
composante ne doit plus être prise en compte dans la suite du tri puisqu’elle est à sa place
(alors la taille du tableau est réduite à n-1)
Après chaque parcours complet du tableau, l'algorithme recommence l'opération.
Lorsqu’aucun échange n'a lieu pendant un parcours ou la taille du tableau n=1, cela signifie
que le tableau est trié alors on arrête l'algorithme.
Exemple étape par étape
Prenons la liste de chiffres « 5 1 4 2 8 » et trions-la de manière croissante en utilisant
l'algorithme de tri à bulles. Pour chaque étape, les éléments comparés sont écrits en gras.
Première étape:
( 5 1 4 2 8 ) ( 1 5 4 2 8 ) Comparaison de 5 et 1 et comme 5 > 1, l'algorithme les échange.
( 1 5 4 2 8 ) ( 1 4 5 2 8 ) Permutation car 5 > 4.
( 1 4 5 2 8 ) ( 1 4 2 5 8 ) Permutation car 5 > 2.
( 1 4 2 5 8 ) ( 1 4 2 5 8 ) Comme 5 < 8, les éléments ne sont pas échangés.
Deuxième étape:
( 1 4 2 5 8 ) ( 1 4 2 5 8 ) Même principe qu'à l'étape 1.
( 1 4 2 5 8 ) ( 1 2 4 5 8 )
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
À ce stade, la liste est triée, mais pour le détecter, l'algorithme doit effectuer un dernier
parcours.
Troisième étape:
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
Comme la liste est triée, aucun échange n'a lieu à cette étape, ce qui provoque l'arrêt de
l'algorithme.
Analyse de la procédure Tri à Bulles :
DEF Proc Tri_Bull ( var t : tab; n: entier)
Résultat = t
T=[] Répéter
[changer faux]
Pour i de 1 à n-1 faire
Si t[i]>t[i+1] alors
Proc Permuter (t[i],t[i+1])
Changer vrai
FinSi
FinPour
n n-1
Jusqu'à (n=1) ou (changer=faux)
Fin Tri_Bull
Test de l'état de permutation