Vous êtes sur la page 1sur 16

Chapitre 7

Les algorithmes de tri


Définition
Algorithme de tri classiques : sélection, insertion, bulle
Algorithme de tri : shell, shaker, comptage, etc.

Imen TOUNSI 1
1. Méthodes de tri dans un tableau
1.1 Tri par sélection (par minimum)
C'est le plus direct des algorithmes de tri.
Principe : Le principe de cette méthode est simple. Elle consiste à :
 Chercher l’indice du plus petit élément du tableau T[1..n] et permuter l’élément
correspondant avec l’élément d’indice 1;
 Chercher l’indice du plus petit élément du tableau T[2..n] et permuter l’élément
correspondant avec l’élément d’indice 2 ;
 ……..
 Chercher l’indice du plus petit élément du tableau T[n-1..n] et permuter
l’élément correspondant avec l’élément d’indice n-1;

Imen TOUNSI 2
Exemple

Imen TOUNSI 3
Procédure Echange(Var a,b : entier) Procédure Tri_Selection (Var T : Tab,
Var n:entier)
Var
Aux : entier
i, j, indmin :entier
Début
Début
Aux←a Pour i de 1 à (n-1) Faire
a←b indmin ← i
b←Aux Pour j de (i+1) à n Faire
Fin Si (T[j] < T[indmin]) Alors
indmin ← j
FinSi
FinPour
Echange(T[i], T[indmin])
FinPour
Fin

Imen TOUNSI 4
1.2 Tri à bulles
 Principe
 Cet algorithme porte le nom de tri bulle car, petit à petit, les plus grands éléments du
tableau remontent, par le jeu des permutations, en fin de tableau.
 La méthode de tri à bulles consiste à répéter le traitement suivant :
• Parcourir les éléments du tableau de 1 à (n-1); si l'élément i est supérieur à l'élément (i+1) , alors on les
permute.
• Le programme s'arrête lorsqu’aucune permutation n'est réalisable après un parcours complet du tableau

Imen TOUNSI 5
Exemple

Imen TOUNSI 6
Procédure Echange(Var a,b : entier) Procédure Tri_Bulle (Var T:Tab, n:entier)
Var Var
Aux : entier i : Entier
permut : Booléen
Début
Début
Aux←a
Répéter
a←b permut← Faux
b←Aux Pour i de 1 à (n-1) Faire
Fin Si (T[i] > T[i+1]) Alors
Echange(T[i],T[i+1])
permut← Vrai
FinSi
FinPour
Jusqu'à (permut = Faux)
Fin
Imen TOUNSI 7
1.3 Tri à Bulles bidirectionnel (cocktail shaker)
 Le tri bidirectionnel ou cocktail shaker est une variante de l'algorithme du tri à bulles.
 Il consiste à parcourir le tableau de gauche à droite, puis de droite à gauche, le
changement de direction ayant lieu chaque fois que l'une des extrémités est atteinte.
 Les plus petits éléments du tableau descendent au même rythme que remonte les plus
grands éléments.

Imen TOUNSI 8
PROCEDURE tri_shaker (Var T:Tab, n:entier) // parcourir le tableau de droite à gauche
Var Pour i de (n-1) à 1 Faire
i : entier Si (T[i] > T[i+1]) Alors
permut : Booléen Echange(T[i],T[i+1])
Début permut← Vrai
i←1 FinSi
Répéter FinPour
permut ← Faux Jusqu'à (permut = Faux)
// parcourir le tableau de gauche à droite FIN
Pour i de 1 à (n-1) Faire
Si (T[i] > T[i+1]) Alors
Echange(T[i],T[i+1])
permut← Vrai
FinSi
FinPour

Imen TOUNSI 9
1.4 Tri par insertion
 Le tri par insertion s’inspire de la manière dont la plupart des gens tiennent des cartes à
jouer.
 Au début, la main gauche du joueur est vide et ses cartes sont posées sur la table.
 Il prend alors sur la table les cartes, une par une, pour les placer dans sa main gauche.
 Pour savoir où placer une carte dans son jeu, le joueur la compare avec chacune des cartes
déjà présentes dans sa main gauche, en examinant les cartes de la droite vers la gauche,
comme le montre la figure.
 A tout moment, les cartes tenues par la main gauche sont triées.

Imen TOUNSI 10
1.4 Tri par insertion
Méthode: Trier le tableau de gauche à droite en insérant à chaque fois l'élément i dans le
tableau.
Le principe est d’ordonner les deux premiers éléments et d’insérer le 3ème de manière à ce
que les 3 premiers soient triés, ensuite d’insérer le 4ème à sa bonne place et ainsi de suite.
 A la ième itérations, les i premiers éléments de T sont triés et rangés au début de T.
 Exemple:

Imen TOUNSI 11
 Tri insertion : ordre croissant
 À une étape courante i :

clé
trié Non trié
 À une étape courante i +1 :

clé
trié Non trié

 Initialement : clé ← T[2]


 Étape suivante : clé ← T[3] ….. T[n]
Pour i de 2 à N

Imen TOUNSI 14
 Tri insertion : ordre croissant
Procédure Tris_Insertion (VAR T : tab)
 À une étape courante i : VAR i, j, clé: entier
1 2 6 8 3 4 11 9 5 DÉBUT
clé Pour i de 2 à N faire
trié Non trié clé ← T[i]
j ← i -1
 À une étape courante i +1 :
Tant que (j > 0 ET T[j] >clé) Faire
1 2 3 6 8 4 11 9 5 T[j +1]← T[j]
clé j ← j -1
trié Non trié FinTantQue
 Initialement : clé ← T[2] T[j+1]← clé
Fin Pour
 Étape suivante : clé ← T[3] ….. T[n]
FIN
Pour i de 2 à N
clé ← T[i]

Imen TOUNSI 15
1.5 Tri shell
 C'est une amélioration notable du tri insertion.
 Il est basé sur le constat que le tri insertion est coûteux lorsqu'il faut faire de grands
déplacements.
 On pratique donc un tri insertion en déplaçant les valeurs d'un pas donné. On raffine ce pas
jusqu'à la valeur 1.
 Lorsque le pas vaut 1 c'est le tri insertion.
 Le choix du pas est important pour les performances
 La série : 1, 4, 13, 40, 121 (pas = 3.pas+1) est souvent utilisée

Imen TOUNSI 17
1.5 Tri shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
20 17 15 8 13 12 9 7 10 3 5 6 4 2 1 Pas = 13

2 17 15 8 13 12 9 7 10 3 5 6 4 20 1 Pas = 13

2 1 15 8 13 12 9 7 10 3 5 6 4 20 17 Pas = 4

2 1 15 8 4 12 9 7 10 3 5 6 13 20 17 Pas = 4

2 1 15 8 4 3 9 7 10 12 5 6 13 20 17 Pas = 4

2 1 5 8 4 3 9 7 10 12 15 6 13 20 17 Pas = 4

2 1 5 6 4 3 9 7 10 12 15 8 13 20 17 Pas = 4

2 1 5 6 4 3 9 7 10 12 15 8 13 20 17 Pas = 4

2 1 5 6 4 3 9 7 10 12 15 8 13 20 17 Pas = 4

2 1 5 6 4 3 9 7 10 12 15 8 13 20 17 Pas = 4

2 1 5 6 4 3 9 7 10 12 15 8 13 20 17 …

Imen TOUNSI 18
Procédure Tris_Shell (VAR T : tab)
VAR i, j, clé, pas : entier
DÉBUT
pas ← 0 Calcul du pas
TantQue (pas<N) Faire
pas ← 3*pas +1
FinTanQue Passage d’un pas Si pas=1, c’est le Le tri insertion
TantQue ( pas<> 1) Faire à un autre tri insertion

pas ← pas DIV 3


Pour i de (pas+1) à N faire
clé ← T[i] Pour i de 2 à N faire
j ← i -1 clé ← T[i]
Tant que (T[j – pas+1] > clé) ET (j > 0) Faire j ← i -1
T[j+1]← T[j –pas+1] Tant que (T[j] > clé) ET (j > 0) Faire
j ← j - pas T[j +1]← T[j]
FinTantQue j←j-1
T[j+1]← clé FinTantQue
Fin Pour T[j+1]← clé
FinTantQue Fin Pour
FIN
Imen TOUNSI 19

Vous aimerez peut-être aussi