INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.
-
Upload
foulques-levasseur -
Category
Documents
-
view
111 -
download
0
Transcript of INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.
![Page 1: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/1.jpg)
INF1101
Cours11Cours11MonceauxMonceaux
INF1101 – Algorithmes et structures de INF1101 – Algorithmes et structures de donnéesdonnées
![Page 2: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/2.jpg)
INF1101
Plan
• Définition de monceau
• Implémentation
• Insertion et retrait d’éléments
• Construction d’un monceux
• Monceaux dans la STL
• Tri par monceau
![Page 3: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/3.jpg)
INF1101
Monceau - définition
• Un arbre complet tel que pour chaque noeud N dont le parent est P, la clé de P est plus petite que celle de N
• Normalement implémenté dans un tableau
• Insertion et retrait sont O(lg N) dans le pire cas
• Insertion est O(1) en moyenne
• Recherche du plus petit élément est O(1) dans le pire cas
![Page 4: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/4.jpg)
INF1101
Monceau – implémentation
• On utilise un tableau pour implémenter l’arbre• On met la racine de l’arbre à la position 1, plutôt
que la position 0, ce qui facilite les opérations
![Page 5: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/5.jpg)
INF1101
Monceau - exemple
13
21
24 31
16
65
19
26 32
68
0 1 2 3 4 5 6 7 8 9 10 11
13 21 16 24 31 19 68 65 26 32
![Page 6: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/6.jpg)
INF1101
Monceau – insertion de 14
13
21
24 31
16
65
19
26 32
68
14 ?
0 1 2 3 4 5 6 7 8 9 10 11
13 21 16 24 31 19 68 65 26 32
![Page 7: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/7.jpg)
INF1101
Monceau - insertion de 14
13
21
24 31
16
65
19
26 32
68
0 1 2 3 4 5 6 7 8 9 10 11
13 21 16 24 31 19 68 65 26 32
14 ?
![Page 8: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/8.jpg)
INF1101
Monceau - insertion de 14
13
21
24
31
16
65
19
26 32
68
0 1 2 3 4 5 6 7 8 9 10 11
13 21 16 24 19 68 65 26 32 31
14 ?
![Page 9: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/9.jpg)
INF1101
Monceau - insertion de 14
13
2124
31
16
65
19
26 32
68
0 1 2 3 4 5 6 7 8 9 10 11
13 16 24 21 19 68 65 26 32 31
14 ?
![Page 10: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/10.jpg)
INF1101
Monceau - insertion de 14
13
2124
31
16
65
19
26 32
68
14
0 1 2 3 4 5 6 7 8 9 10 11
13 14 16 24 21 19 68 65 26 32 31
![Page 11: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/11.jpg)
INF1101
Monceau - retrait
13
2124
31
16
65
19
26 32
68
14
0 1 2 3 4 5 6 7 8 9 10 11
13 14 16 24 21 19 68 65 26 32 31
![Page 12: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/12.jpg)
INF1101
Monceau - retrait
2124
31
16
65
19
26 32
68
14
0 1 2 3 4 5 6 7 8 9 10 11
14 16 24 21 19 68 65 26 32 31
![Page 13: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/13.jpg)
INF1101
Monceau - retrait
2124
16
65
19
26 32
68
14
0 1 2 3 4 5 6 7 8 9 10 11
14 16 24 21 19 68 65 26 32
31 ?
![Page 14: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/14.jpg)
INF1101
Monceau - retrait
2124
16
65
19
26 32
68
14
0 1 2 3 4 5 6 7 8 9 10 11
14 16 24 21 19 68 65 26 32
31 ?
![Page 15: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/15.jpg)
INF1101
Monceau - retrait
21
24
16
65
19
26 32
68
14
0 1 2 3 4 5 6 7 8 9 10 11
14 21 16 24 19 68 65 26 32
31 ?
![Page 16: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/16.jpg)
INF1101
Monceau - retrait
21
24
16
65
19
26 32
68
14
31
0 1 2 3 4 5 6 7 8 9 10 11
14 21 16 24 31 19 68 65 26 32
![Page 17: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/17.jpg)
INF1101
Monceau - construction
47
20
21
61
45
17 55
63
92
12
37 25 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 20 12 45 63 61 17 55 37 25 64 83 73
![Page 18: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/18.jpg)
INF1101
Monceau - construction
47
20
21
61
45
17 55
63
92
12
37 25 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 20 12 45 63 61 17 55 37 25 64 83 73
![Page 19: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/19.jpg)
INF1101
Monceau - construction
47
20
21
61
45
17 55
63
92
12
37 25 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 20 12 45 63 61 17 55 37 25 64 83 73
![Page 20: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/20.jpg)
INF1101
Monceau - construction
47
20
21
61
25
17 55
63
92
12
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 20 12 25 63 61 17 55 37 45 64 83 73
![Page 21: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/21.jpg)
INF1101
Monceau - construction
47
20
21
61
25
17 55
63
92
12
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 20 12 25 63 61 17 55 37 45 64 83 73
![Page 22: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/22.jpg)
INF1101
Monceau - construction
47
20
21
61
25
17 55
63
92
12
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 20 12 25 63 61 17 55 37 45 64 83 73
![Page 23: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/23.jpg)
INF1101
Monceau - construction
47
17
21
61
25
20 55
63
92
12
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 17 12 25 63 61 20 55 37 45 64 83 73
![Page 24: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/24.jpg)
INF1101
Monceau - construction
47
17
21
61
25
20 55
63
92
12
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 17 12 25 63 61 20 55 37 45 64 83 73
![Page 25: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/25.jpg)
INF1101
Monceau - construction
47
17
21
61
25
20 55
63
92
12
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 47 21 17 12 25 63 61 20 55 37 45 64 83 73
![Page 26: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/26.jpg)
INF1101
Monceau - construction
12
17
21
61
25
20 55
63
92
47
37 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 12 21 17 47 25 63 61 20 55 37 45 64 83 73
![Page 27: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/27.jpg)
INF1101
Monceau - construction
12
17
21
61
25
20 55
63
92
37
47 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 12 21 17 37 25 63 61 20 55 47 45 64 83 73
![Page 28: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/28.jpg)
INF1101
Monceau - construction
12
17
21
61
25
20 55
63
92
37
47 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
92 12 21 17 37 25 63 61 20 55 47 45 64 83 73
![Page 29: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/29.jpg)
INF1101
Monceau - construction
92
17
21
61
25
20 55
63
12
37
47 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
12 92 21 17 37 25 63 61 20 55 47 45 64 83 73
![Page 30: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/30.jpg)
INF1101
Monceau - construction
17
92
21
61
25
20 55
63
12
37
47 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
12 17 21 92 37 25 63 61 20 55 47 45 64 83 73
![Page 31: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/31.jpg)
INF1101
Monceau - construction
17
20
21
61
25
92 55
63
12
37
47 45 64 83 73
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
12 17 21 20 37 25 63 61 92 55 47 45 64 83 73
![Page 32: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/32.jpg)
INF1101
Monceaux dans la STL • Fonction pour créer un monceau:
make_heap(Iterator deb, Iterator fin)
• Fonctions pour insérer et retirer un élémentpush_heap(Iterator deb, Iterator fin)pop_heap(Iterator deb, Iterator fin)
• Toutes ces fonctions ont une seconde version avec un troisième argument qui est un prédicat qui permet de redéfinir l’opérateur de comparaison utilisé
• Note: l’itérateur doit être un itérateur à accès direct, ce qui limite les possibilités de conteneurs (vector et deque)
![Page 33: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/33.jpg)
INF1101
Monceaux dans la STL
• Il existe aussi un adaptateur priority_queue• On peut choisir le type de conteneur et de
fonction de comparaison• Offre les fonctions suivantes:
– push()– top()– pop()
• Voir les exemples fournis en annexe (à exécuter dans .NET)
![Page 34: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/34.jpg)
INF1101
Tri par monceau - Principe• On applique les modifications suivantes au
monceau:– chaque noeud a une valeur plus grande ou égale à
celle de tous ses descendants– dans le tableau qui implémente le monceau, la racine
se trouve à l’index 0 (au lieu de 1)– pour chaque noeud i, les index sont donc 2*i+1 pour le
fils gauche et 2*i+2 pour le fils droit
![Page 35: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/35.jpg)
INF1101
Tri par monceau - Principe• La procédure est la suivante:
– On met dans le tableau les valeurs à trier– On crée le monceau initial (de type Parent > Fils)– On retire la racine du monceau (qui est la plus grande
valeur) et on la permute avec le dernier item du monceau
– On fait percoler la racine, s’il y a lieu– On répète le processus avec le monceau obtenu qui
contient maintenant un élément de moins
![Page 36: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/36.jpg)
INF1101
Tri par monceau - Exemple
37
20
2
65 36
12
57
0 1 2 3 4 5 6 7
12 37 2 20 57 65 36
MONCEAU
![Page 37: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/37.jpg)
INF1101
Tri par monceau - Exemple
37
20
2
65 36
12
57
0 1 2 3 4 5 6 7
12 37 2 20 57 65 36
Création du monceau
MONCEAU
![Page 38: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/38.jpg)
INF1101
Tri par monceau - Exemple
37
20
65
2 36
12
57
0 1 2 3 4 5 6 7
12 37 65 20 57 2 36
Création du monceau
MONCEAU
![Page 39: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/39.jpg)
INF1101
Tri par monceau - Exemple
57
20
65
2 36
12
37
0 1 2 3 4 5 6 7
12 57 65 20 37 2 36
Création du monceau
MONCEAU
![Page 40: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/40.jpg)
INF1101
Tri par monceau - Exemple
57
20
12
2 36
65
37
0 1 2 3 4 5 6 7
65 57 12 20 37 2 36
Création du monceau
MONCEAU
![Page 41: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/41.jpg)
INF1101
Tri par monceau - Exemple
57
20
36
2 12
65
37
0 1 2 3 4 5 6 7
65 57 36 20 37 2 12
Création du monceau (fin)
MONCEAU
![Page 42: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/42.jpg)
INF1101
Tri par monceau - Exemple
57
20
36
2
12
37
0 1 2 3 4 5 6 7
12 57 36 20 37 2 65
Retrait du premier élément
MONCEAU
![Page 43: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/43.jpg)
INF1101
Tri par monceau - Exemple
12
20
36
2
57
37
0 1 2 3 4 5 6 7
57 12 36 20 37 2 65
Percoler
MONCEAU
![Page 44: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/44.jpg)
INF1101
Tri par monceau - Exemple
37
20
36
2
57
12
0 1 2 3 4 5 6 7
57 37 36 20 12 2 65
Percoler
MONCEAU
![Page 45: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/45.jpg)
INF1101
Tri par monceau - Exemple
37
20
36
2
12
0 1 2 3 4 5 6 7
2 37 36 20 12 57 65
Retrait du premier élément
MONCEAU
![Page 46: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/46.jpg)
INF1101
Tri par monceau - Exemple
2
20
36
37
12
0 1 2 3 4 5 6 7
37 2 36 20 12 57 65
Percoler
MONCEAU
![Page 47: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/47.jpg)
INF1101
Tri par monceau - Exemple
20
2
36
37
12
0 1 2 3 4 5 6 7
37 20 36 2 12 57 65
Percoler
MONCEAU
![Page 48: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/48.jpg)
INF1101
Tri par monceau - Exemple
20
2
36
12
0 1 2 3 4 5 6 7
12 20 36 2 37 57 65
Retrait du premier élément
MONCEAU
![Page 49: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/49.jpg)
INF1101
Tri par monceau - Exemple
20
2
12
36
0 1 2 3 4 5 6 7
36 20 12 2 37 57 65
Percoler
MONCEAU
![Page 50: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/50.jpg)
INF1101
Tri par monceau - Exemple
20 12
2
0 1 2 3 4 5 6 7
2 20 12 36 37 57 65
Retrait du premier élément
MONCEAU
![Page 51: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/51.jpg)
INF1101
Tri par monceau - Exemple
2 12
20
0 1 2 3 4 5 6 7
20 2 12 36 37 57 65
Percoler
MONCEAU
![Page 52: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/52.jpg)
INF1101
Tri par monceau - Exemple
2
12
0 1 2 3 4 5 6 7
12 2 20 36 37 57 65
Retrait du premier élément
MONCEAU
![Page 53: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/53.jpg)
INF1101
Tri par monceau - Exemple
2
12
0 1 2 3 4 5 6 7
12 2 20 36 37 57 65
Percoler
MONCEAU
![Page 54: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/54.jpg)
INF1101
Tri par monceau - Exemple
2
0 1 2 3 4 5 6 7
2 12 20 36 37 57 65
Retrait du premier élément
Le tableau est maintenant trié
![Page 55: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/55.jpg)
INF1101
Tri partiel• Supposons maintenant un monceau dont la
racine est le plus petit élément (contrairement à l’exemple précédent)
• Supposons que le tableau contient n éléments, et une valeur m < n
• On remarquera que après m itérations, on obtient, à la fin du tableau, et en ordre inverse, les m plus petits éléments du tableau
• On peut donc, de manière efficace, trier les m plus petits éléments du tableau: O(m lg n)
• Avec le tri par sélection, c’est aussi possible, mais moins efficace: O(mn)
![Page 56: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/56.jpg)
INF1101
Tri partiel - exemple
37
20
2
65 36
12
57
0 1 2 3 4 5 6 7
12 37 2 20 57 65 36
MONCEAU
![Page 57: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/57.jpg)
INF1101
Tri partiel - exemple
20
37
12
65 36
2
57
0 1 2 3 4 5 6 7
2 20 12 37 57 65 36
MONCEAU
Création du monceau
![Page 58: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/58.jpg)
INF1101
Tri partiel - exemple
20
37
12
65
36
57
0 1 2 3 4 5 6 7
36 20 12 37 57 65 2
MONCEAU
Retrait du premier élément
![Page 59: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/59.jpg)
INF1101
Tri partiel - exemple
20
37
36
65
12
57
0 1 2 3 4 5 6 7
12 20 36 37 57 65 2
MONCEAU
Percoler
![Page 60: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/60.jpg)
INF1101
Tri partiel - exemple
20
37
36
65
57
0 1 2 3 4 5 6 7
65 20 36 37 57 12 2
MONCEAU
Retrait du premier élément
![Page 61: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/61.jpg)
INF1101
Tri partiel - exemple
37
65
36
20
57
0 1 2 3 4 5 6 7
20 37 36 65 57 12 2
MONCEAU
Percoler
![Page 62: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/62.jpg)
INF1101
Tri partiel - exemple
37
65
36
57
0 1 2 3 4 5 6 7
57 37 36 65 20 12 2
MONCEAU
Retrait du premier élément
![Page 63: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/63.jpg)
INF1101
Tri partiel - exemple
37
65
57
36
0 1 2 3 4 5 6 7
36 37 57 65 20 12 2
MONCEAU
Percoler
![Page 64: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/64.jpg)
INF1101
Tri partiel - exemple
0 1 2 3 4 5 6 7
36 37 57 65 20 12 2
MONCEAU
Si on arrête ici, on voit qu’on a bien obtenu les 3plus petits éléments, qui sont en ordre croissant sion parcourt le tableau à partir de la fin
![Page 65: INF1101 Cours11 Monceaux INF1101 – Algorithmes et structures de données.](https://reader036.fdocument.pub/reader036/viewer/2022062307/551d9dd3497959293b8e5905/html5/thumbnails/65.jpg)
INF1101
Les tris dans la STL• sort():
– Doit garantir un temps moyen dans O(n lg n)– Le tri rapide (quicksort) répond à ce critère
• stable_sort():– Doit garantir O(n lg n) dans le pire cas– Peut utiliser de la mémoire supplémentaire– Le tri par fusion (mergesort) répond à ce critère
• partial_sort()– Doit garantir un temps moyen dans O(n lg n)– Doit permettre le tri partiel– Le tri par monceau (heapsort) répond à ce critère