La racine est constituée par la case n° 1 ; les autres cases se placent en séquence de gauche à droite, puis de haut en bas.
Exemple avec un tableau de 10 cases :
Supposons dans un premier temps que toute l'arborescence située sous chacun des enfants est correctement agencée (chaque parent contient une valeur supérieure à chacun de ses enfants).
Deux cas peuvent se produire :
En fait, il n'est pas nécessaire d'effectuer un échange à chaque étape : il suffit de mémoriser le contenu du parent initial, d'effectuer tous les tests par rapport à ce contenu : la dernière case libérée devra accueillir cette valeur.
L'hypothèse prise est toujours respectée après la première itération, puisque seule la racine peut être déclassée (contenu échangé avec la dernière case du tableau).
Seul le cas de l'étape 1 reste donc à règler.
Pour obtenir un arbre correct à la fin de l'étape 1 :
Pour créer un arbre :
Mémoriser le contenu initial du ParentCopier dans la position courante de Parent le contenu initial du Parent
Tableau à trier : [7,5,1,9,2]
Le n° déchelon du tableau est indiqué en rouge.
Construction de l'arbre initial |
||
Etat initial de l'arbre non ordonné.
L'échelon n° 3 (contenant la valeur 1), pris comme parent, n'a pas d'enfant ; sa descendance est donc correcte. |
L'échelon n° 2 (contenant 5) est parent.
Ses enfants sont comparés ; le plus grand contient 9. |
|
|
|
||
Puisque 9 > 5, les contenus sont échangés.
Il n'y a plus de descendance. |
L'échelon n° 1 (contenant 7) est parent.
Ses enfants sont comparés ; le plus grand contient 9. |
|
Puisque 9 > 7, les contenus sont échangés
Un échange ayant eu lieu, on examine la descendance à partir de l'enfant avec lequel s'est effectué l'échange. L'échelon n° 2 (contenant 7) est parent. Ses enfants sont comparés ; le plus grand contient 5 Puisque 7 > 5, les contenus sont ordonnés ; l'arbre reste inchangé Puisqu'on est parti de la racine, l'arbre est ordonné |
||
1ère itération |
||
Le contenu du premier et du dernier échelon sont échangés.
Le dernier échelon contient maintenant sa valeur finale, et est exclu du reste du traitement |
L'échelon n° 1 (contenant 2) est parent
Ses enfants sont comparés ; le plus grand contient 7 |
|
|
|
||
Puisque 7 > 2, les contenus sont échangés
Un échange ayant eu lieu, on examine la descendance à partir de l'enfant avec lequel s'est effectué l'échange. |
Puisque 5 > 2, les contenus sont échangés
Il n'y a plus de descendance, l'arbre restant est donc ordonné |
|
Le contenu du premier et du dernier échelon sont échangés
Le dernier échelon contient maintenant sa valeur finale, et est exclu du reste du traitement |
L'échelon n° 1 (contenant 2) est parent
Ses enfants sont comparés ; le plus grand contient 5 |
|
|
|
Puisque 5 > 2, les contenus sont échangés
Il n'y a plus de descendance, l'arbre restant est donc ordonné |
|
3ème itération |
|
Le contenu du premier et du dernier échelon sont échangés
Le dernier échelon contient maintenant sa valeur finale, et est exclu du reste du traitement |
L'échelon n° 1 (contenant 1) est parent
Un seul de ses enfants est à prendre en compte ; il contient 2 Il ne reste donc plus que ces 2 cases. Puisqu'elles sont ordonnées, le tri est terminé Voir remarque ci-après. |
Pour appliquer strictement l'algorithme, il faudrait ordonner le dernier arbre constitué des cases 1 et 2, ce qui conduirait à échanger leur contenu, puis démarrer une itération et les échangeant de nouveau.
Exemple de programme en Visual Basic
Par contre les performances sont relativement indépendantes de la répartition initiale des valeurs ; c'est donc un algorithme intéressant s'il n'y a pas de tendance particulière à cette répartition.
Retour à la table des matières des tris
Dernière mise à jour de cette page : 12/8/2007