Fichier
Le principe du tri bulle (bubble sort) est de comparer deux à deux les éléments e1 et e2 consécutifs d'un tableau et d'effecteur une permutation si e1 > e2. On continue de trier jusqu'à ce qu'il n'y ait plus de permutation. La démo ci-après détaille le fonctionnement du tri bulle :
Votre navigateur ne peut pas lancer cette applet !
Voici, en pseudo-code, l'algorithme du tri bulle : PRODECURE Tri_bulle (Tableau a[1:n]) VARIABLE permut : Booleen; REPETER permut = FAUX POUR i VARIANT DE 1 à N-1 FAIRE SI a[i] > a[i+1] ALORS echanger a[i] et a[i+1] permut = VRAI FIN SI FIN POUR TANT QUE permut = VRAI FIN PROCEDURE
La complexité dans le pire des cas du tri bulle est en O(n2).Le graphique ci-contre montre la progression du nombre d'instruction en fonction de la taille des données. | |
Il existe beaucoup de variantes du tri bulle. Parmi celles-ci on peut citer le tri bulle "Boustrophedon" ou "bi-directionnel". Le boustrophédon est un mode d'écriture archaïque qui consiste à tracer les lignes alternativement de gauche à droite et de droite à gauche. Cet algorithme de tri fonctionne comme le tri bulle mais change de direction à chaque fois qu'il est parvenu à une extrémité :
Votre navigateur ne peut pas lancer cette applet !
On peut également citer le tri "Shuttle" (navette en anglais), encore appelé "tri Shaker". Ce tri fonctionne comme le tri bulle mais effectue un retour arrière dès qu'une permutation est détectée :
Votre navigateur ne peut pas lancer cette applet !
Voici, en Caml, l'algorithme du tri bulle : let tri_bulle vecteur = let permut = ref true in begin