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

VI. Tri par tas.

Présentations similaires


Présentation au sujet: "VI. Tri par tas."— Transcription de la présentation:

1 VI. Tri par tas

2 Notion de tas (binaire)
AB partiellement ordonné Chaque parent ≥ à chacun de ses enfants Tas Principe

3 Mappage tableau / AB Interprétation d’un tableau comme AB
On utilise la relation entre index déjà étudiée Elément racine : A[1] Enfants de l’élément A[i] Fils gauche : A[2i] Fils droit : A[2i + 1] D’où les trois primitives Père(i) qui retourne Gauche(i) qui retourne 2i Droit(i) qui retourne 2i + 1 Conséquence pour le tas Pour tout i, A[Père(i)] ≥ A[i] Tas Mappage

4 Entasser Utilitaire fondamentale du tri par tas
Transforme un arbre (un sous-arbre) en tas Principe Si la racine est majorée par l’un de ses deux fils (ou les 2) Alors permutation du parent avec le plus grand fils Peut entrainer la rupture de la structure de tas du sous-arbre représenté par le fils  appel récursif de la procédure sur le fils impacté La complexité est évidemment logarithmique Tas Entasser

5 Entasser Tas Entasser

6 Construire un tas C’est appliquer la procédure Entasser à tous les sous-arbres en remontant de celui d’index max à l’arbre principal d’index 1 Petite optimisation Appliquer Entasser à une feuille est inutile Quel est l’index du dernier nœud qui n’est pas une feuille ? Tas Construire le tas

7 Construire un tas Note sur complexité Une borne évidente est O(nlnn)
Mais elle n’est pas optimale ! Pas le temps de la démonstration ( littérature) Elle est en O(n) Tas Construire le tas

8 Tri par tas Propriété : dans un tas, l’élément maximum est au sommet (racine) 1. ConstruireTas Pour amener le maximum en première position du table (racine) 2. On extrait (mémorise) ce maximum Transposition du premier et du dernier éléments du tableau Echange de A[1] et A[A.taille] et A.taille  A.taille – 1 Cela entraîne la rupture de tas au niveau de la racine En revanche, tous les autres nœuds restent des tas !! 3. On répète Entasser (et non 1.) sur la racine A[1] suivi de 2. Tant que A.taille > 1 A l’issue de ce traitement, A est trié en ordre croissant Complexité : O(nlnn) Tas Tri par tas

9 Tri par tas Tas Tri par tas

10 Exemple complet : Mappage
Trier par tas le tableau suivant D’abord le mappage : Tri par tas Exemple

11 ConstruireTas ConstruireTas
Les feuilles (i > n / 2) sont déjà des tas Tri par tas Exemple

12 ConstruireTas Les premiers Entasser
Pas de rupture de structure de tas enfante Tri par tas Exemple

13 ConstruireTas L’entassement de la racine provoque une rupture de la structure de tas sur son SAG  appel récursif d’Entasser L’arbre est un tas  A[1] est le max Tri par tas Exemple

14 1er max  Entasser On place 94 en réserve et on entasse la racine
Tri par tas Exemple

15 2nd max  Entasser On place 67 en réserve et on entasse Tri par tas
Exemple

16 3ème max  Entasser On place 55 en réserve et on entasse Tri par tas
Exemple

17 Finalisation en accéléré
On place 44 en réserve etc. Le tableau est finalement trié ! Tri par tas Exemple


Télécharger ppt "VI. Tri par tas."

Présentations similaires


Annonces Google