Transcript of Tri par Sélection Tri par Sélection Tri par Insertion Tri par Insertion Tri Bulles Tri Bulles Tri...
- Page 1
- 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
- Page 6
- Tri par Slection 1 1.2 Exemple On veut trier les lments: 42,
20, 17, 13, 28, 14, 23 et 15 42 20 17 13 28 14 23 15 13 20 17 42 28
14 23 15 13 14 17 42 28 20 23 15 13 14 15 42 28 20 23 17 13 14 15
17 28 20 23 42 13 14 15 17 20 28 23 42 13 14 15 17 20 23 28 42 13
14 15 17 20 23 28 42 i=1i=2i=3i=4i=5i=6i=7
- Page 7
- Tri par Slection 1
- Page 8
- 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
- Page 11
- Tri par Insertion 2 2.2 Exemple On veut trier les lments: 42,
20, 17, 13, 28, 14, 23 et 15 42 20 17 13 28 14 23 15 20 42 17 13 28
14 23 15 17 20 42 13 28 14 23 15 13 17 20 42 28 14 23 15 13 17 20
28 42 14 23 15 13 14 17 20 28 42 23 15 13 14 17 20 23 28 42 15 13
14 15 17 20 23 28 42 i=7i=1i=2i=3i=4i=5i=6
- Page 12
- Tri par Insertion 2
- Page 13
- 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
- Page 17
- Tri par Bulles 3 3.2 Exemple Mme exemple 42 20 17 13 28 14 23
15 k=2k=8k=7k=6k=5k=4k=3 42 20 17 13 28 14 15 23 42 20 17 13 28 14
15 23 42 20 17 13 14 28 15 23 42 20 17 13 14 28 15 23 42 20 13 17
14 28 15 23 42 13 20 17 14 28 15 23 13 42 20 17 14 28 15 23
k=8k=7k=6k=5k=4k=3 13 42 20 17 14 28 15 23 13 42 20 17 14 15 28 23
13 42 20 17 14 15 28 23 13 42 20 14 17 15 28 23 13 42 14 20 17 15
28 23 13 14 42 20 17 15 28 23 i=1i=2
- Page 18
- 13 14 42 20 17 15 28 23 Tri par Bulles 3 3.2 Exemple Mme
exemple k=8k=7k=6k=5k=4 13 14 15 42 20 17 23 28 k=8k=7k=6k=5 i=3i=4
13 14 42 20 17 15 23 28 13 14 42 20 17 15 23 28 13 14 42 20 15 17
23 28 13 14 42 15 20 17 23 28 13 14 15 42 20 17 23 28 13 14 15 42
20 17 23 28 13 14 15 42 20 17 23 28 13 14 15 42 17 20 23 28 13 14
15 17 42 20 23 28
- Page 19
- 13 14 15 17 42 20 23 28 Tri par Bulles 3 3.2 Exemple Mme
exemple k=8k=7k=6 13 14 15 17 20 42 23 28 k=8k=7 i=5i=6 13 14 15 17
42 20 23 28 13 14 15 17 42 20 23 28 13 14 15 17 20 42 23 28 13 14
15 17 20 42 23 28 13 14 15 17 20 23 42 28 k=8 i=7 13 14 15 17 20 23
42 28 13 14 15 17 20 23 28 42
- Page 20
- Tri par Bulles 3
- Page 21
- 3 3.4 Complexit
- Page 22
- 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.