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

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.