Tri par Sélection Tri par Sélection Tri par Insertion Tri par Insertion Tri Bulles Tri Bulles Tri...
30
Les Algorithmes de Tri Tri par Sélection Tri par Insertion Tri Bulles Tri Rapide A. Lotfi mai 2012 Introduction
Tri par Sélection Tri par Sélection Tri par Insertion Tri par Insertion Tri Bulles Tri Bulles Tri Rapide Tri Rapide A. Lotfi mai 2012 Introduction Introduction
Tri par Slection Tri par Slection Tri par Insertion Tri par
Insertion Tri Bulles Tri Bulles Tri Rapide Tri Rapide A. Lotfi mai
2012 Introduction Introduction
Page 2
Introduction 0.1 Dfinition trier signifie rpartir en plusieurs
classes selon certains critres . De manire plus restrictive, le
terme de tri en algorithmique est trs souvent attach au processus
de classement d'un ensemble d'lments dans un ordre donn. Par
exemple, trier N entiers dans l'ordre croissant, ou N noms dans
l'ordre alphabtique. Tout ensemble muni d'un ordre total peut
fournir une suite d'lments trier. Le tri est sans doute le problme
fondamental de lalgorithmique 1. plus de 25% des CPU cycles sont
dans les tris 2. le tri est fondamental beaucoup dautres problmes,
par exemple recherche binaire. 0
Page 3
Introduction 0.2 Utilit Ainsi donc, aprs le tri, beaucoup de
problmes deviennent faciles rsoudre. Par exemple : 1. Unicit
dlments: aprs le tri tester les lments adjacents 2. Une fois le tri
fait, on peut dterminer le k me plus grand lment en O(1) Les
problmes de tri discuts dans ce cours sont ceux o lensemble des
donnes trier se trouvent en mmoire centrale. Les problmes de tri
dont les donnes sont en mmoire secondaire ne sont pas discuts dans
ce cours. 0
Page 4
Introduction 0.3 Prsentation du problme 0
Page 5
Tri par Slection 1 1.1 Principe Rpter 1. chercher le plus grand
(le plus petit) lment => Slection 2. le mettre la fin (au dbut)
i n 1 t Les i-1 petits lments tris Le plus petit lment du
reste
1 1.3 Implmentation Procdure TriSelection(t : Tableau[1.. Max]
dentiers, nbElements : naturel) i, k, indMin : naturel; temp :
entier; Dbut Pour i=1 nbElements-1 faire /* recherche du numro du
minimum */ indMin = i; Pour k=i+1 nbElements faire si (t[k] <
t[indMin]) alors indMin = k; Fin Si Fin Pour /* change des valeurs
entre la case courante et le minimum */ temp = t[i]; t[i] =
t[indMin]; t[indMin] = tmp; Fin Pour Fin
Page 9
Tri par Slection 1 1.4 Complexit
Page 10
Tri par Insertion 2 2.1 Principe Insertion du prochain lment
dans la partie qui est dj trie prcdemment La partie de dpart qui
est trie est le premier lment Il se pourrait quon a dplacer
plusieurs lments pour linsertion i n 1 t Les i-1 premiers lments dj
tris Les lments non tris Elments insrer
2 2.3 Implmentation Procedure TriInsertion(t : Tableau[1.. Max]
dentiers, nbElements : naturel) i, k : naturels; temp : entier;
Dbut Pour i=2 nbElements faire temp = t[i]; k = i; Tant que (k >
1 et t[k-1] > temp) faire t[k] = t[k - 1]; k = k - 1; Fin tant
que t[k] = temp; Fin pour Fin
Page 14
Tri par Insertion 2 2.4 Complexit
Page 15
Tri par Insertion 2 2.4 Complexit
Page 16
Tri par Bulles 3 3.1 Principe La stratgie de cet algorithme est
: 1. Parcourir le tableau en comparant deux deux les lments
successifs, permuter s'ils ne sont pas dans l'ordre 2. Rpter tant
que des permutations sont effectues. i n 1 t Les i-1 premiers
lments dj tris Les lments non tris Niveau 0 Le plus petit remonte
en surface
Tri par Bulles 3 3.3 Implmentation Procdure TriBulles(t :
Tableau[1.. Max] dentiers, nbElements : Naturel) i, k : Naturels;
Dbut Pour i=1 nbElements-1 faire Pour k=nbElements i+1 faire Si
t[k]
4 4.3 Implmentation Fonction indicePivot=Partition(t,debut,fin)
Pivot : entier i, j, pivot : naturels Next : caractre Dbut
pivot=t(debut); vide=debut; i=debut+1; j=fin; next='j'; Tant que
i
Tri Rapide 4 4.3 Implmentation Procedure TriRapide(t : Tableau.
Max] dentiers, debut, fin : Naturels) indicePivot : naturel Dbut Si
fin>debut alors indicePivot=Partition(t, debut, fin);
TriRapide(t, debut, indicePivot-1); TriRapide(t, indicePivot+1,
fin); Fin si Fin /* Programme principal */ procdure CallerProgram(t
: Tableau[1.. Max] dentiers) Dbut TriRapide(t, 1, N); Fin
Page 30
Tri Rapide 4 4.4 Complexit La partie du tri la plus sensible
reste le choix du pivot. Dans l'algorithme prcdent, il est choisi
au hasard parmi les lments du tableau, mais ce choix peut se rvler
catastrophique : si le pivot est chaque choix le plus petit lment
du tableau, alors le tri rapide dgnre en tri par slection. En
gnral, la complexit de ce tri est : dans le meilleur des cas, en O
(N log 2 N) ; en moyenne, en O (N log 2 N) ; dans le pire des cas,
en O (N 2 ). Il existe bon nombre d'astuces pour rendre le cas dgnr
du tri rapide le plus improbable possible, ce qui rend finalement
cette mthode la plus rapide en moyenne parmi toutes celles
utilises.