La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chapitre VII. Tri Tri par tas Tri rapide. Tris faisant appel aux arbres Dichotomique (quick sort) Tri par fusion Tris par tas ….

Présentations similaires


Présentation au sujet: "Chapitre VII. Tri Tri par tas Tri rapide. Tris faisant appel aux arbres Dichotomique (quick sort) Tri par fusion Tris par tas …."— Transcription de la présentation:

1 Chapitre VII. Tri Tri par tas Tri rapide

2 Tris faisant appel aux arbres Dichotomique (quick sort) Tri par fusion Tris par tas ….

3 Tri par tas Fait appel à la structure de larbre binaire parfait partiellement ordonné La complexité est Le principe : prendre le tri par sélection et accélérer la recherche de min par lorganisation adéquate de données (heapsort)

4 Rappel du tri par sélection Tri par sélection Principe : on recherche le minimum dans la partie restante du tableau et on léchange avec lélément qui suit la partie déjà triée. Après k placements les k plus petits éléments du tableau sont déjà à leur place définitive G

5 Arbre binaire parfait Arbre binaire parfait : tous les niveaux sont complètement remplis, sauf éventuellement le dernier niveau. Dans ce dernier cas les nœuds (feuilles) du dernier niveau sont groupés le plus à gauche possible. Arbre binaire parfait est un arbre équilibré parfait « imparfait »

6 Numérotation hiérarchique(1) Numéroter en ordre croissant à partir de 1 tous les nœuds num(r)=1 num(n)=i => num(FG(n))=2i et num(FD(n))=2i

7 Numérotation hiérarchique(2) 2 le père du noeud dindice i est à lindice (i div 2) 1 le fils gauche du nœud dindice i est en 2i le fils droit du nœud dindice i est en 2i+1

8 a b c d e f g h i j Représentation sous forme dun tableau Codage dun arbre binaire parfait avec N nœuds par un tableau de N cases Un arbre binaire parfait comportant p nœuds et de hauteur 1 a 3 c 2 b 4 d 5 e 6 f7 g 8 h 9 i 10 j

9 Arbres binaires parfaits partiellement ordonnés ABPPO : est un arbre étiqueté par des éléments dun ensemble muni dun ordre total ( ex < sur un ensemble des entiers). contenu(n)

10 Tas Tas : un tableau représentant un arbre parfait partiellement ordonné. - t[1] est la racine - t[i div 2] est le père de t[i] pour tout i>1 - t[2*i] = FG(t[i]) (si il existe) - t[2*i +1] = FD(t[i]) (si il existe) - Si p est le nombre de nœuds de larbre et si 2*i=p, alors t[i] na quun seul fils t[p]. - Si i est supérieur à p div 2, t[i] est une feuille Si M est la taille du tableau qui contient un tas de p éléments, alors p

11 (1) Adjonction dun élément : - ajouter le nouvel élément à la nouvelle feuille créée à cet effet - réorganiser le tas pour maintenir la cohérence Ajout (1) (1;3) (3,9) (2;5) (4;6) (5;7) (6;11) (7; 10) (8; 12) (9;18)(10;13) (11;4) (1;3) (3,9) (2;5) (4;6) (5;4) (6;11) (7; 10) (8; 12) (9;18)(10;13) (11;7) 1

12 Ajout (2) (1;3) (3,9) (2;5) (4;6) (5;4) (6;11) (7; 10) (8; 12) (9;18)(10;13) (11;7) (1;3) (3,9) (2;4) (4;6) (5;5) (6;11) (7; 10) (8; 12) (9;18)(10;13) (11;7) (2)

13 Ajout (3) Procédure Ajouter(réf t: tableau[1..M] dentiers; réf p:entier, x:entier); {on suppose que p1) et (t[i]

14 Suppression (1) (2) Suppression de lélément minimal : - retirer le min et le renvoyer ; - réorganiser le tas : placer la dernière feuille dans la racine et réordonner larbre : pour chaque nœud chercher le plut petit de ces deux fils et permuter.

15 Suppression (2) (1;3) (3,9) (2;4) (4;6) (5;5) (6;11) (7; 10) (8; 12) (9;18)(10;13) (11;7) (3) (3,9) (2;4) (4;6) (5;5) (6;11) (7; 10) (8; 12) (9;18)(10;13) (11;7)

16 Suppression (3) (1;7) (3,9) (2;4) (4;6) (5;5) (6;11) (7; 10) (8; 12) (9;18)(10;13) (1;4) (3,9) (2;7) (4;6) (5;5) (6;11) (7; 10) (8; 12) (9;18)(10;13)

17 Suppression (4) (1;4) (3,9) (2;5) (4;6) (5;7) (6;11) (7; 10) (8; 12) (9;18)(10;13)

18 Suppression (5) Procédure SuppressionMin(réf t: tableau [1…M] dentiers, réf p,min : entiers) {on suppose que le tas nest pas vide au moment de lappel : p>0} Var i,j: entiers; Début { on retient le minimum} min:=t[1]; {réorganisation du tas} t[1]:=t[p]; p:=p-1; i:=1; {placer la dernière feuille à la racine} Tq i< (p div 2) faire {t[i] – nest pas une feuille} { calcul de lindice du plus petit des deux fils de t[i] ou de son seul fils 2*i=p} Si (2*i=p) ou (t[2*i] t[j] {échange si la condition dordre nest âs satisfaite} alors échanger(t[i], t[j]) i:=j; sinon sortir FSi FTq FinSuppressionMin;

19 Utilisation dun tas pour le tri dun tableau (1) La base : le tri par sélection. Rechercher le minimum dans la partie du tableau non-triée et le placer à sa place définitive. Transformer le tableau en tas (avec la procédure « ajouter ») Utiliser le tas pour extraire le min et le placer à l afin du tableau (tri par ordre décroissant) min 1 M Tas de M éléments min 1 M-1 Tas de M -1 éléments Etc…

20 Utilisation dun tas pour le tri dun tableau (2) Procédure Tri-par-Tas(réf t: tableau[1…M] dentiers) Var p, min: entiers Début p:=0 Tq p1 faire SuppressionMin(t,p,min) {p diminue de 1 à chaque appel SuppressionMin} t[p+1]:=min FTq Fin Tri-par-Tas

21 Complexité du tri pas tas Construction du tas : M appels de la procédure ajouter. Sa complexité dans le pire de cas est de La sélection de lélément le plus petit se fait par M-1 appels de la procédure SuppressionMin. Sa complexité dans le pire des cas est de La complexité du tri par tas est donc en Avec « comparaison » comme opération fondamentale.

22 Tri rapide(Quick Sort) Tri dichotomique : on partage une liste à trier ( tableau) en deux sous-listes L1,L2: Les éléments de L1 sont tous inférieurs à tous les éléments de L2 On recommence jusquà avoir les sous- listes réduits à un élément

23 Principe de tri rapide Élément Pivot Choisir un élément pivot et placer les éléments inférieurs à gauche, supérieurs – à - droite Pivot se trouve à sa place définitive Choix du Pivot – 1 er élément du tableau Recommencer avec les deux sous-listes tq atteindre 1 élément

24 Exemple

25 Tri rapide – pivot Supposons que nous avons une procédure placer (réf t,val i,j,réf k): t est défini entre i, j, k – emplacement définitif du pivot (paramètre de sortie) placer : place élément t[i] à la k-ème place et renvoie k.

26 Algorithme général Procédure tri-rapide(réf t: tableau[1..n+1] des entiers; val i,j : entiers) {t[n+1] contint une sentinelle} Var k : entier; Début –Si i

27 Procédure de partition et de placement(1) GD Avancer G Tq t[G] < Pivot Reculer D Tq t[D] > Pivot Permuter GD

28 Procédure de partition et de placement(2) Ajout dune sentinelle t[n+1] > t[i] pour tout i=1, ….,n Quand on appelle « placer » sur une partie de tableau qui nest pas la fin du tableau, cette sentinelle existe : lélément qui se trouve à lindice j+1 est le pivot de lappel précédent. Il est donc supérieur à tous les éléments entre i et j.

29 Procédure de partition et de placement(3) Procédure placer (réf t: tableau[1..n+1] des entiers; i,j, : entiers, réf k: entier) Var G : entier; Début –G:=i+1;k:=j – TQ Gt[i] k:=k-1; TQ t[G] < t[i] G:=G+1; Si G

30 Analyse Graphe dappels est un arbre binaire Complexité au pire Opération fondamentale : comparaison. A chaque niveau de larbre au pire n comparaisons La hauteur de larbre est C est donc (?)

31 Version itérative Procédure tri-rapide-iter(réf t : tableau[1..n+1]des entiers) Var Q:PILE; i,j,k : entiers i:=1;j:=n;pile-vide(Q); TQ vrai faire TQ i


Télécharger ppt "Chapitre VII. Tri Tri par tas Tri rapide. Tris faisant appel aux arbres Dichotomique (quick sort) Tri par fusion Tris par tas …."

Présentations similaires


Annonces Google