238
Structures de données IFT-2000 Abder Alikacem Abder Alikacem Semaine 14 Les algorithmes de tri Département d’informatique et de génie logiciel Édition septembre 2009 ! +

Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Embed Size (px)

Citation preview

Page 1: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Structures de données

IFT-2000

Abder AlikacemAbder Alikacem

Semaine 14Les algorithmes de tri

Département d’informatique et de génie logiciel

Édition septembre 2009

! +

Page 2: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Plan

• Définitions et propriétés• Les algorithmes de tri simples et leur complexité• Les algorithmes de tri complexes et leur complexité

• Le tri rapide (QuickSort)• Le tri-fusion (MergeSort)• Le tri par arbre (TreeSort)• Le tri par monceau (HeapSort)

Page 3: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Traitement de données triées

• Le traitement de données déjà triées est plus rapide.

• Nécessaire pour le traitement séquentiel d’intervalles.

• Il faut trier des données à bas coût !• nb de comparaisons• nb de déplacements d’éléments• espace mémoire requis

Page 4: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri selon une relation d’ordre

Besoin :• attribut de tri (clé) : <nom,…>, <nom,prénom,...>• que l’on peut comparer {<,=,>} (c.-à-d. ordre total)

déplacer toute l’information : <clé,...>ou <clé,indirection>, + indirection vers l’information

Il faut trier des données à bas coût !

• nb de comparaisons• nb de déplacements d’éléments• espace mémoire requis

Page 5: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Critères d'analyse

Complexité en temps : 2 critères de base• nombre de comparaisons entre clés• nombre de transferts (ou d’échanges) d'éléments

Complexité en place mémoire : nécessaire au tri• tri sur place (in situ) : en O(1)• tri à côté : en O(n) • tri récursif : utilise une pile

Stabilité• conserve l'ordre originel pour éléments de clés égales

Progressivité• à l'étape k trie les k premiers éléments de la liste

Configuration particulière des données : aléatoires, triées, inversées, égales, presque triées

Page 6: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Critères d'analyse

• Meilleur cas: tableau déjà trié

• Cas moyen: tableau aléatoire

• Pire cas: tableau trié à l’envers

1 3 5 7 9 10

13

18

21

25

7 10

21

9 1 25

18

3 5 13

25

21

18

13

10

9 7 5 3 1

Page 7: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Les algorithme de tri

Les algorithmes de tri «classiques»:• Tris élémentaires

• tri insertion;• tri sélection;• Etc..

• Tris dichotomiques• tri rapide (Quick Sort);• tri fusion;

• Tris par structure• tri par arbre (Tree Sort);• tri par monceau (Heap Sort)• tri pigeonnier (Pigeon Hole).• tri basique

• Tri aléatoire• … et le Bogo tri

Page 8: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Méthodes simples de tri

Intérêts pédagogiques (terminologie et mécanismes fondamentaux)

Tris simples plus efficaces • sur des petites listes (moins de 50 éléments)• sur des listes presque triées• sur des listes contenant un grand nombre de clés égales

Certains tris complexes• sont améliorés en faisant appel à des tris simples sur une partie des

données

Page 9: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Algorithme#1 :

insérer chacun des n éléments à la bonne place dans le tableau créé jusqu’ici

Tri par insertion :

44,55,12,42,94,18,06,67

Page 10: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

Page 11: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

Page 12: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

44

Page 13: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

44

Page 14: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,55

Page 15: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,55

Page 16: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,55

Page 17: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,55

Page 18: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,55

Page 19: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,55

Page 20: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,94

Page 21: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,94

Page 22: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,9412,18,42,44,55,94

Page 23: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,9412,18,42,44,55,94

Page 24: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,9412,18,42,44,55,9406,12,18,42,44,55,94

Page 25: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,9412,18,42,44,55,9406,12,18,42,44,55,94

Page 26: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,9412,18,42,44,55,9406,12,18,42,44,55,9406,12,18,42,44,55,67,94

Page 27: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par insertion :

44,55,12,42,94,18,06,67

4444,5512,44,5512,42,44,5512,42,44,55,9412,18,42,44,55,9406,12,18,42,44,55,9406,12,18,42,44,55,67,94

Page 28: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri par insertion

template template < < typenametypename T>T>voidvoid TriInsertion(vector<T>& Tableau, int n) TriInsertion(vector<T>& Tableau, int n){{

intint j; j;T Tmp;T Tmp;forfor ( (intint i=1;i<n; i++ ) i=1;i<n; i++ ){ {

//Placer l'element courant dans la variable tampon//Placer l'element courant dans la variable tamponTmp = Tableau[i];Tmp = Tableau[i];j=i;j=i;

//Tant que la position d'insertion n'est pas atteinte...//Tant que la position d'insertion n'est pas atteinte...whilewhile ( (--j>=0) && (Tmp<Tableau[j]) ) ( (--j>=0) && (Tmp<Tableau[j]) )

Tableau[j+1]=Tableau[j];Tableau[j+1]=Tableau[j];Tableau[j+1]=Tmp;Tableau[j+1]=Tmp;

}}}}

Page 29: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri stable?tri in situ?progressif?

Meilleur cas : séquence triée•nb de comparaisons ? •nb de déplacements ?

Pire cas : séquence triée inverse•nb de comparaisons ? •nb de déplacements ?

Tri par insertion• insérer chacun des n éléments à la bonne place dans le tableau créé

jusqu’ici

Page 30: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri par insertion :

• insérer chacun des n éléments à la bonne place dans le tableau créé jusqu’ici …

tri stable?tri in situ?progressif?

Meilleur cas : séquence triée•nb de comparaisons ? O(n) O(n log n)•nb de déplacements ? O(1)

Pire cas : séquence triée inverse•nb de comparaisons ? O(n2) O(n log n)•nb de déplacements ? O(n2)

Page 31: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri par insertion dichotomique :

• Idée • au lieu de parcourir les i premiers éléments triés pour faire l'insertion

du i + 1 ième, rechercher la place où insère par dichotomie.

• Complexité• nb de transferts est identique à celui de l'insertion séquentielle O(n2)

dans le pire des cas et en moyenne• nb de comparaisons en O(n log n) (au pire et en moyenne)

• En pratique : n'améliore pas vraiment les performances

Page 32: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri shell, Donald Shell

• Une variante du tri par insertion • Lenteur du tri par insertion

• les échanges ne portent que sur des voisins si le plus petit élément est à la fin il faut n étapes pour le placer définitivement

• Principe du tri shell • éliminer les plus grands désordres pour abréger le travail aux étapes

suivantes• Idée

• ordonner des séries d'éléments éloignés de h, h prenant de valeurs de plus en plus petites (jusqu'à 1)

• Exemple (suite déterminée empiriquement)

• hn = (1093, 384, 121, 40, 13, 4, 1)

• Hn+1 = 3 hn +1

Tris simples

Page 33: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri shell

template <typename T>void triShell(vector<T> & Tableau, int n) { … while (p <= n) { p = (3 * p) + 1; } while (p > 0) { ….

p = p/3; }

}

Page 34: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri shell

• On a démontré que la complexité dans le pire des cas est O(n3/2 ).

• En choisissant pour suite d'incréments

1, 3, 7, 15, 31 ( hi+1 = 2hi + 1) on obtient expérimentalement une complexité en O(n1,2 ).

• Très efficace jusqu'à 5000 éléments que les données soient aléatoires, triées ou en ordre inverse, code facile et compact, conseillé quand on n'a aucune raison d'en choisir un autre.

Tris simples

tri stable?tri in situ?progressif?

Page 35: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Algorithme#2

• remplir les cases de 1 à n avec le minimum des éléments du tableau restant

Page 36: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

3154

6478

1742

3154

6418

7742

123456789

101112

123456789

101112

reste à classerMIN

échange

Tris simples

Algorithme#2

Recherche du minimum par balayage séquentiel

Page 37: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri par sélection :

44,55,12,42,94,18,06,67

Algorithme :• remplir les cases de 1 à n avec le minimum des

éléments du tableau restant

Page 38: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

Page 39: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

Page 40: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67

Page 41: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67

Page 42: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67

Page 43: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67

Page 44: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67

Page 45: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67

Page 46: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67

Page 47: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67

Page 48: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67

Page 49: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,67

Page 50: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,67

Page 51: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,67

Page 52: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67

Page 53: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67

Page 54: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67

Page 55: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,67

Page 56: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,67

Page 57: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,67

Page 58: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,6706,12,18,42,44,55,67,94

Page 59: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,6706,12,18,42,44,55,67,94

Page 60: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,6706,12,18,42,44,55,67,94

Page 61: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,6706,12,18,42,44,55,67,9406,12,18,42,44,55,67,94

Page 62: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri par sélection :

44,55,12,42,94,18,06,67

06,55,12,42,94,18,44,67 06,12,55,42,94,18,44,67 06,12,18,42,94,55,44,67 06,12,18,42,94,55,44,6706,12,18,42,44,55,94,67 06,12,18,42,44,55,94,6706,12,18,42,44,55,67,9406,12,18,42,44,55,67,94

Page 63: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par sélection

templatetemplate<<typenametypename T> T>voidvoid TriSelection( vector<T>& Tableau, int n) TriSelection( vector<T>& Tableau, int n){ { int min;int min; T Tmp;T Tmp; forfor ( (intint i=0 ; i<n-1 ; i++ ) { i=0 ; i<n-1 ; i++ ) {

////RechercheRecherche de l'ind de l'indiceice du plus petit element du plus petit element min = i;min = i; forfor ( (intint j=i+1 ; j<n ; j++ ) { j=i+1 ; j<n ; j++ ) { if if ( Tableau[j]<Tableau[min] )( Tableau[j]<Tableau[min] ) min = j;min = j; }} //Permutation des elements//Permutation des elements Tmp = Tableau[i];Tmp = Tableau[i]; Tableau[i]Tableau[i] == Tableau[min];Tableau[min]; Tableau[min]Tableau[min] == Tmp;Tmp;

}}}}

Tris simples

Page 64: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par sélection

Meilleur cas : séquence triée•nb de comparaisons ? •nb de déplacements ?

Pire cas : séquence triée inverse•nb de comparaisons ? •nb de déplacements ?

tri in situ?progressif?

Stable?

21,17,21,5,2,9,2,7

Tri sélection • remplir les cases de 1 à n avec le minimum des éléments du tableau restant

Page 65: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri par sélection• remplir les cases de 1 à n avec le minimum des éléments du tableau

restant

Meilleur cas : séquence triée•nb de comparaisons ? O(n2)•nb de déplacements ? O(1)

Pire cas : séquence triée inverse•nb de comparaisons ? O(n2)•nb de déplacements ? O(n)

tri in situ ?progressif ?stable ?

Stable?

21,17,21,5,2,9,2,7

Page 66: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri par sélection

21,17,21,5,2,9,2,7

stable ?

Page 67: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

14

235

54

123

45

123

45

123

45

123

Les balayages

peuvent être éliminés

Algorithme#3

remonter les plus petites valeurs à la surface, et ce, à chaque itération

Page 68: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri à bulles (« Bubblesort »)

44,55,12,42,94,18,06,67

Algorithme :• remonter les plus petites bulles à la surface, et ce, à chaque itération

Page 69: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,67

Page 70: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,67

Page 71: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

Page 72: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

Page 73: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

Page 74: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

Page 75: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

Page 76: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

Page 77: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

Page 78: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

Page 79: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

Page 80: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

Page 81: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

06,12,18,44,55,42,67,94

Page 82: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

06,12,18,44,55,42,67,94

Page 83: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

06,12,18,44,55,42,67,94

Page 84: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

06,12,18,44,55,42,67,94

06,12,18,42,44,55,67,94

Page 85: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

06,12,18,44,55,42,67,94

06,12,18,42,44,55,67,94

Page 86: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

tri à bulles (« Bubblesort ») :

44,55,12,42,94,18,06,6706,44,55,12,42,94,18,67

06,44,55,12,18,42,94,67

06,12,44,55,18,42,94,67

06,12,44,55,18,42,67,94

06,12,18,44,55,42,67,94

06,12,18,42,44,55,67,94

Page 87: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri à bulles (« Bubblesort »)

templatetemplate<<typenametypename T> T>voidvoid TriBulle( TriBulle(vector<T>& Tableauvector<T>& Tableau, , int int n)n){ {

T Tmp;T Tmp;forfor ( (intint i=0; i<n-1; i++)i=0; i<n-1; i++)

forfor ( (intint j=n-1; j>i; j--) j=n-1; j>i; j--)ifif ( Tableau[j-1]> Tableau[j]) ( Tableau[j-1]> Tableau[j]){ {

Tmp = Tableau[j-1];Tmp = Tableau[j-1];Tableau[j-1] = Tableau[j];Tableau[j-1] = Tableau[j];Tableau[j] = Tmp;Tableau[j] = Tmp;

}}}}

Tris simples

Page 88: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri à bulles

Meilleur cas : séquence triée•nb de comparaisons ? •nb de déplacements ?

Pire cas : séquence triée inverse•nb de comparaisons ? •nb de déplacements ?

tri stable?tri in situ?progressif?

Tri à bulles (« Bubblesort ») • remonter les plus petites bulles à la surface, et ce, à chaque itération

Page 89: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri à bulles (« Bubblesort ») • remonter les plus petites bulles à la surface, et ce, à chaque

itération

Meilleur cas : séquence triée•nb de comparaisons ? O(n2)•nb de déplacements ? O(1)

Pire cas : séquence triée inverse•nb de comparaisons ? O(n2)•nb de déplacements ? O(n2)

tri stable?tri in situ?progressif?

Page 90: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris simples

Tri à bulles (« Bubblesort »)

Première amélioration Une première amélioration consiste à arrêter le processus s'il n'y a aucun échange dans une passe.

Deuxième amélioration : ShakerSortUne deuxième amélioration consiste à alterner le sens des passes.

Troisième amélioration Une troisième qui consiste à reprendre au début chaque fois qu’il y a une

permutation.

Page 91: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Complexité • en temps : en O(n2) en moyenne et au pire des cas

• en nombre de transferts • ou en nombre de comparaisons en O(n²).

• en espace : en O(1) (tris sur place)

Sauf tri shell • ne conviennent pas pour un nombre important de données

Faciles à comprendre et à mettre en œuvre

Tris simples

Page 92: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri rapide (« Quicksort »)

Tri dichotomique appelé aussi tri des bijoutiers Idée :

trier les perles avec des tamis plus ou moins fins pour chaque tamis

on sépare les perles en deux sous-ensembles (celles qui passent et celles qui restent dans le tamis)

puis on trie celles qui sont passées avec un tamis plus fin et les autres avec un tamis plus gros

Tris complexes

Page 93: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

44,55,12,42,94,18,06,67

Algorithme • choisir un pivot p (élément médian)• partager le tableau en 2 :

• sous-tableau de gauche : éléments ≤ p• sous-tableau de droite : éléments > p• l’élément entre les 2 le pivot est à sa place définitive

• appel récursif avec le sous-tableau de gauche• appel récursif avec le sous-tableau de droite

Page 94: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

Partage avec pivot = 3

32 4 1 7 2 3 6

32 2 1 7 4 3 6

32 2 1 3 4 7 6

31 2 2 3 4 6 7

TRI TRI

< 3 3

Suite du tri

Page 95: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

44,55,12,42,94,18,06,67

Page 96: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

44,55,12,42,94,18,06,67

Page 97: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

44,55,12,42,94,18,06,67

Page 98: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

44,55,12,42,94,18,06,67

Page 99: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,55,12,42,94,18,44,67

Page 100: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,55,12,42,94,18,44,67

Page 101: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 102: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 103: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 104: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 105: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 106: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 107: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,18,12,42,94,55,44,67

Page 108: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 109: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 110: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 111: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 112: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 113: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 114: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 115: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 116: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 117: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,94,55,44,67

Page 118: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,94,67

Page 119: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,94,67

Page 120: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,94,67

Page 121: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,94,67

Page 122: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,94,67

Page 123: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,94,67

Page 124: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,67,94

Page 125: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,67,94

Page 126: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,67,94

Page 127: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,67,94

Page 128: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

06,12,18,42,44,55,67,94

Page 129: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Meilleur cas :•nb de comparaisons ? •nb de déplacements ?

Pire cas :•nb de comparaisons ? •nb de déplacements ?

tri stable ?tri in situ ?progressive?

Page 130: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Meilleur cas : pivot = médiane•nb de comparaisons ? •nb de déplacements ?

Pire cas :•nb de comparaisons ? •nb de déplacements ?

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Page 131: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94 n/2 n/2

Meilleur cas : pivot = médiane•nb de comparaisons ? •nb de déplacements ?

Pire cas :•nb de comparaisons ? •nb de déplacements ?

Page 132: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? •nb de déplacements ?

Pire cas :•nb de comparaisons ? •nb de déplacements ?

n/4 n/4n/4 n/4

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94 n/2 n/2

Page 133: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)

•nb de déplacements ?

Pire cas :•nb de comparaisons ? •nb de déplacements ?

n/4 n/4n/4 n/4

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94 n/2 n/2

Page 134: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas :•nb de comparaisons ? •nb de déplacements ?

n/4 n/4n/4 n/4

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94 n/2 n/2

Page 135: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas :•nb de comparaisons ? •nb de déplacements ?

Page 136: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? •nb de déplacements ?

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Page 137: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? •nb de déplacements ?

n-1

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Page 138: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? •nb de déplacements ?

n-2

n-1

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Page 139: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

n-3

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

n-2

n-1

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? •nb de déplacements ?

Page 140: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

n-4

n-3

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

n-2

n-1

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? •nb de déplacements ?

Page 141: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

n-4

n-3

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

n-2

n-1

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? O(n2)•nb de déplacements ?

Page 142: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

n-4

n-3

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

06,12,18,42,44,55,67,94

n-2

n-1

tri rapide (« Quicksort ») :

06,12,18,42,44,55,67,94

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

Pire cas : pivot = min. ou max.•nb de comparaisons ? O(n2)•nb de déplacements ? O(n2)

Page 143: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif :• taille de la pile = ?

• meilleur cas :• pire cas :• en moyenne :

Page 144: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif :• taille de la pile = ?

• meilleur cas : O(log n)• pire cas :• en moyenne :

Page 145: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif :• taille de la pile = ?

• meilleur cas : O(log n)• pire cas : O(n)• en moyenne :

Page 146: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif :• taille de la pile = ?

• meilleur cas : O(log n)• pire cas : O(n)• en moyenne : O(log n)

Page 147: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif :• taille de la pile = ?

• meilleur cas : O(log n)• pire cas : O(n)• en moyenne : O(log n)

• Comment faire pour minimiser la taille de la pile ?

Page 148: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif :• taille de la pile = ?

• meilleur cas : O(log n)• pire cas : O(n)• en moyenne : O(log n)

• Comment faire pour minimiser la taille de la pile ?• empiler toujours le plus grand des 2 sous-tableaux

• O(1) ≤ taille de la pile ≤ O(log n) plutôt que :• O(1) ≤ taille de la pile ≤ O(n)

Page 149: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Algorithme récursif • taille de la pile = ?

• meilleur cas : O(log n)• pire cas : O(n)• en moyenne : O(log n)

• Comment faire pour minimiser la taille de la pile ?• empiler toujours de sous-tableaux de taille optimum• Tout dépend du choix du pivot

• du pire cas : O(n2) au meilleur cas : O(n log n)• Comment choisir un bon pivot ?

Page 150: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

la solution idéale est de trouver à chaque fois la valeur médiane du sous-tableau à trier, mais sa recherche précise rend le tri plus lent que sans elle. Une solution quelquefois utilisée est de prendre par exemple trois valeurs, pour en prendre la valeur médiane, par exemple tab[droite], tab[gauche] et tab[(droite+gauche)/2] (dans le cas d'un tableau parfaitement mélangé, le choix de trois positions n'a pas d'importance, mais dans des tableaux presque triés le choix ci-dessus est plus judicieux). La totalité de ces améliorations peut apporter un gain de l'ordre de 20% par rapport à la version de base.

Problèmes du « Quicksort »

Choix du pivot :• du pire cas : O(n2) au meilleur cas : O(n log n)• Comment choisir un bon pivot ?

Page 151: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Attention aux bornes :

06,18,12,42,94,55,44,67

Page 152: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Attention aux bornes :

06,12,18,42,94,55,44,67

Problèmes du « Quicksort »

Page 153: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Attention aux bornes :

06,12,18,42,94,55,44,67

Problèmes du « Quicksort »

Page 154: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Problèmes du « Quicksort »

Attention aux bornes :

06,12,18,42,94,55,44,67

Choix du pivot :• du pire cas : O(n2) au meilleur cas : O(n log n)• Comment choisir un bon pivot ?

Attention aux constantes cachées : O(n log n)• n doit être grand !!!• tri doit être in situ !

Page 155: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Mais…

• Très bien compris, étudié tant au niveau théorique qu’expérimental.

• Très bonnes performances s'il est optimisé• dérécursivé• tri par insertion sur les petites listes

Page 156: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

Meilleur cas : pivot = médiane•nb de comparaisons ? O(n log n)•nb de déplacements ? O(1)

En moyenne•nb de comparaisons ? O(n log n)•nb de déplacements ? O(n log n)

Pire cas : pivot = min. ou max.•nb de comparaisons ? O(n2) •nb de déplacements ? O(n2)

tri stable?tri in situ?progressif?

Ce qu’il faut retenir de ce tri:

Page 157: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

templatetemplate < <typenametypename T> T>voidvoid QuickSort(vector<T>& tableau, QuickSort(vector<T>& tableau, intint inf, inf, intint sup) sup){{

intint milieu; milieu;if if (sup>inf)(sup>inf) // s'il y a au moins 2 éléments// s'il y a au moins 2 éléments{{

milieu = Partition(tableau,milieu = Partition(tableau, inf,inf, sup);sup);

// trier la partie de gauche// trier la partie de gaucheQuickSort(tableau,QuickSort(tableau, inf,inf, milieu);milieu);// trier la partie de droite// trier la partie de droiteQuickSort(tableau,QuickSort(tableau, milieu+1, sup);milieu+1, sup);

}}}}

Page 158: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

templatetemplate < <typenametypename T>T>intint Partition(vector<T>& tableau, Partition(vector<T>& tableau, int int inf,inf, int int sup) sup){{

T pivot, tempo;T pivot, tempo;intint i,j; i,j;pivot = tableau[(sup+inf)/2];pivot = tableau[(sup+inf)/2];i = inf-1;i = inf-1;j = sup+1;j = sup+1;

// Suite a la page suivante// Suite a la page suivante

Page 159: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri rapide (« Quicksort »)

while while ( i<j ) ( i<j ) // tant que les index ne croisent pas// tant que les index ne croisent pas { { // conserver les éléments plus petits ou égaux // conserver les éléments plus petits ou égaux //au pivot à sa gauche//au pivot à sa gauche dodo { i++;{ i++; } } whilewhile (tableau[i]<pivot); (tableau[i]<pivot); // conserver les éléments plus grands ou // conserver les éléments plus grands ou //égaux au pivot à sa droite//égaux au pivot à sa droite dodo { j--;{ j--; } } whilewhile (tableau[j]>pivot); (tableau[j]>pivot); // Permuter les éléments qui ne sont pas// Permuter les éléments qui ne sont pas // à leur place// à leur place ifif ( i<j) ( i<j) {{ tempo = tableau[i];tempo = tableau[i];

tableau[i]= tableau[j];tableau[i]= tableau[j];tableau[j]= tempo;tableau[j]= tempo;

}} }}

returnreturn j; } j; }

Page 160: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par fusion

Diviser• Diviser la séquence de n éléments à trier en 2 sous-séquences de taille n/2

Régner• Trier les 2 sous-séquences

Combiner• Fusionner les 2 sous-séquences triées

Tris complexes

Page 161: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par fusion "descente" division"remontée" fusion

5 2 4 6 1 3 2 61 2 2 3 4 5 6 6

5 2 4 62 4 5 6

1 3 2 61 2 3 6

5 22 5

4 64 6

1 31 3

2 62 6

5 2 4 6 1 3 2 6

divisionfusion fusion

division divisionfusion fusion

f f f f f f f fd d d d

fusion fusion

Page 162: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

1 n 1 mTrié Trié

1 n+mTrié

t1

t3

t2

template template <<typename typename T>T>voidvoid triFusion( triFusion(TT * t, * t, int int debut, debut, intint fin) fin) {{

ifif(debut<fin) (debut<fin) {{

int int milieu=(debut+fin)/2;milieu=(debut+fin)/2;

triFusion(t, debut, milieu);triFusion(t, debut, milieu);triFusion(t, milieu+1, fin);triFusion(t, milieu+1, fin);fusionner(t, debut, milieu, fin);fusionner(t, debut, milieu, fin);

}}}}

Page 163: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

void fusionner(T * t, int debut, int milieu, int fin) { int i1=debut; // indice courant dans t[debut..milieu] int i2=milieu+1; // indice courant dans t[milieu+1..fin] int i3=0; // indice courant dans t3 (tableau auxiliaire) T *t3; // tableau auxiliaire dynamique de longueur fin-debut+1

t3= new T[fin-debut+1];

while((i1<=milieu)&&(i2<=fin)) {

if(t[i1]<t[i2]) { t3[i3]=t[i1]; i1++;} else { t3[i3]=t[i2]; i2++; } i3++; }

if(i1>milieu) // on a epuisé t[debut..milieu] for(;i2<=fin;i2++,i3++) t3[i3]=t[i2]; else // on a epuisé t[milieu+1..fin] for(;i1<=milieu;i1++,i3++) t3[i3]=t[i1];

// il faut transférer t3 à sa place dans t for(i1=0;i1<i3;i1++) { t[i1+debut]=t3[i1]; }

delete [] t3;}

Page 164: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par fusion

Comparaison avec le tri QuickSort

Tris complexes

Stabilité?in situ?Progressivité?

Complexité?

Page 165: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri par arbre (« Treesort »)

44,55,12,42,94,18,06,67

Algorithme utiliser une structure d’arbre pour trier la séquence de clés

faire un nouvel arbre ? O(n log n) mais n nouveaux éléments + ptrs : trop d’espace !!!

Page 166: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri par arbre (« Treesort »)

• utiliser une structure d’arbre pour trier la séquence de clés• utiliser les éléments de base comme feuilles

44

55

12

42

18

06

67

94

Page 167: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

12

42

18

06

67

94

44

12

06

18

Page 168: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

12

42

18

06

67

94

44

12

06

18

12

06

Tris complexes

Page 169: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

12

42

18

06

67

94

44

12

06

18

12

06

06

Tris complexes

Page 170: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

12

42

18

06

67

94

44

12

06

18

12

06

06

Tris complexes

Page 171: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

12

42

18

67

94

44

12

67

18

12

18

12

Tris complexes

Page 172: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

12

42

18

67

94

44

12

67

18

12

18

12

Tris complexes

Page 173: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

42

18

67

94

44

42

67

18

42

18

18

Tris complexes

Page 174: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

42

18

67

94

44

42

67

18

42

18

18

Tris complexes

Page 175: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

44

55

42

18

67

94

44

42

67

18

42

18

18

Tris complexes

Page 176: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par arbre (« Heapsort »)

44,55,12,42,94,18,06,67

Algorithme • bâtir une structure d’arbre sur place

• hi h2i

• hi h2i+1

• structure appelée « monceau » (« heap »)

Tris complexes

Page 177: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Monceau - définition

Tris complexes

• Un arbre complet tel que pour chaque noeud N dont le parent est P, la clé de P est plus grande que celle de N

• Normalement implémenté dans un tableau• Insertion et retrait sont O(log 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 178: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri par arbre (« Heapsort »)

44

55

9442

67

12

18 06

55 12 42 94 18 06 67442 3 4 5 6 7 81

Page 179: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Création du monceau

44

55

9442

67

12

18 06

55 12 42 94 18 06 67442 3 4 5 6 7 81

Page 180: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

9442

67

12

18 06

55 12 42 94 18 06 67442 3 4 5 6 7 81

Page 181: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

9467

42

12

18 06

55 12 67 94 18 06 42442 3 4 5 6 7 81

Page 182: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

9467

42

12

18 06

55 12 67 94 18 06 42442 3 4 5 6 7 81

Page 183: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

9467

42

12

18 06

55 12 67 94 18 06 42442 3 4 5 6 7 81

Page 184: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

9467

42

18

12 06

55 18 67 94 12 06 42442 3 4 5 6 7 81

Page 185: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

55

9467

42

18

12 06

55 18 67 94 12 06 42442 3 4 5 6 7 81

Page 186: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

94

5567

42

18

12 06

94 18 67 55 12 06 42442 3 4 5 6 7 81

Page 187: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

94

5567

42

18

12 06

94 18 67 55 12 06 42442 3 4 5 6 7 81

Page 188: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

94

44

5567

42

18

12 06

44 18 67 55 12 06 42942 3 4 5 6 7 81

Page 189: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

94

67

5544

42

18

12 06

67 18 44 55 12 06 42942 3 4 5 6 7 81

Page 190: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

94

67

5544

42

18

12 06

67 18 44 55 12 06 42942 3 4 5 6 7 81

Page 191: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

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 192: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

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 (MonceauSTL.cpp)

Page 193: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Tri par monceau – Principe

•La procédure est la suivante:– On met dans le tableau les n 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 rétablit le monceau avec les (n-1) valeurs, s’il y a lieu– On répète le processus avec le monceau obtenu qui contient

maintenant un élément de moins

Page 194: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

Le tri

94

67

5544

42

18

12 06

67 18 44 55 12 06 42942 3 4 5 6 7 81

Page 195: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

42

67

5544

94

18

12 06

67 18 44 55 12 06 94422 3 4 5 6 7 81

Page 196: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

42

67

5544

94

18

12 06

67 18 44 55 12 06 94422 3 4 5 6 7 81

Page 197: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

42

67

5544

94

18

12 06

67 18 44 55 12 06 94422 3 4 5 6 7 81

Page 198: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

67

42

5544

94

18

12 06

42 18 44 55 12 06 94672 3 4 5 6 7 81

Page 199: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

67

55

4244

94

18

12 06

55 18 44 42 12 06 94672 3 4 5 6 7 81

Page 200: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

67

55

4244

94

18

12 06

55 18 44 42 12 06 94672 3 4 5 6 7 81

Page 201: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06

55

4244

94

18

12 67

55 18 44 42 12 67 94062 3 4 5 6 7 81

Page 202: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

55

06

4244

94

18

12 67

06 18 44 42 12 67 94552 3 4 5 6 7 81

Page 203: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

55

44

4206

94

18

12 67

44 18 06 42 12 67 94552 3 4 5 6 7 81

Page 204: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

55

44

4206

94

18

12 67

44 18 06 42 12 67 94552 3 4 5 6 7 81

Page 205: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

12

44

4206

94

18

55 67

44 18 06 42 55 67 94122 3 4 5 6 7 81

Page 206: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

12

4206

94

18

55 67

12 18 06 42 55 67 94442 3 4 5 6 7 81

Page 207: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

42

1206

94

18

55 67

42 18 06 12 55 67 94442 3 4 5 6 7 81

Page 208: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

44

42

1206

94

18

55 67

42 18 06 12 55 67 94442 3 4 5 6 7 81

Page 209: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

12

42

4406

94

18

55 67

42 18 06 44 55 67 94122 3 4 5 6 7 81

Page 210: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

42

12

4406

94

18

55 67

12 18 06 44 55 67 94422 3 4 5 6 7 81

Page 211: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

42

12

4406

94

18

55 67

12 18 06 44 55 67 94422 3 4 5 6 7 81

Page 212: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06

12

4442

94

18

55 67

12 18 42 44 55 67 94062 3 4 5 6 7 81

Page 213: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

18

12

4442

94

06

55 67

12 06 42 44 55 67 94182 3 4 5 6 7 81

Page 214: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

18

12

4442

94

06

55 67

12 06 42 44 55 67 94182 3 4 5 6 7 81

Page 215: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06

12

4442

94

18

55 67

12 18 42 44 55 67 94062 3 4 5 6 7 81

Page 216: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

12

06

4442

94

18

55 67

06 18 42 44 55 67 94122 3 4 5 6 7 81

Page 217: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

12

06

4442

94

18

55 67

06 18 42 44 55 67 94122 3 4 5 6 7 81

Page 218: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06

12

4442

94

18

55 67

12 18 42 44 55 67 94062 3 4 5 6 7 81

Page 219: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

06

12

4442

94

18

55 67

12 18 42 44 55 67 94062 3 4 5 6 7 81

Page 220: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

« Heapsort »

Algorithme • créer le monceau en descendant les clés• trier en échangeant le maximum et le dernier + redescendre

complexité ? stabilitéin situprogressivité

Page 221: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tris complexes

« Heapsort »

Algorithme • créer le monceau en descendant les clés• trier en échangeant le maximum et le dernier + redescendre

complexité ?• O(n log n) en tout temps!• aucun espace additionnel requis !!!

stabilitéin situprogressivité

Page 222: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Quicksort, tri-fusion versus Heapsort

En moyenne, Quicksort a de meilleurs constantes cachées

que le tri-fusion et le Heapsort (par évaluations empiriques)

Stabilité?in situ?Progressivité?

Page 223: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Conclusion

Quelques comparaisons

• tri par tas (monceau): meilleure complexité• tri rapide et tri fusion: efficaces• tri par insertion excellent si liste initiale presque triée• et

• tri par sélection donne le début de liste trié avant la fin du tri• tri par insertion peut débuter sans liste initiale complète

Doit-on toujours trier complètement ?

Page 224: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Autres tris

Si le tableau contient un grand nombre de valeurs similaires:

algorithme par comptage ou tri par pigeonnier.

Conclusion

• Aucun tri qui compare des clefs peut s’exécuter en moins de temps que O(n lg n)• D’autres algorithmes peuvent se faire plus rapidement mais ils ne comparent des

clefs et ils fonctionnent dans des conditions particulières.• Le tri par pigeonnier est un de ces cas. Il fait l’hypothèses que les clefs à trier sont

des entiers entre 1 et R (rang)• On l'appelle également le tri par comptage (Counting sort en anglais)• c'est l'algorithme LE PLUS performant en terme d'utilisation CPU.

Page 225: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par pigeonnier

1 6 3Tableau ETableau E

Tableau UTableau U

6

0 1 2 3 4 5 6

1 3 6 6

Page 226: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par pigeonnier

1 6 3 6

0 1 0 1 0 0 2

1 3 6 6

Page 227: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par pigeonnier

U[k] = U[k] - 1

T[i] k

i i+1

tant que U[k] 0

pour k à rang

i

pour i à n

U[k] U[k] + 1

pour k à rang

k T[i]

U[k] 0

TriPigeonnier(T[1..n])

Complexité spatiale?

Complexité temporel?

Page 228: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par pigeonnier

U[k] = U[k] - 1

T[i] k

i i+1

tant que U[k] 0

pour k à rang

i

pour i à n

U[k] U[k] + 1

pour k à rang

k T[i]

U[k] 0

TriPigeonnier(T[1..n])

Complexité spatiale: O(n+rang)

Complexité temporelle: O(n+rang)) siaucun doublon

Page 229: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri par pigeonnier

Cependant de GROS inconvénients :  1) Si l'écart entre la valeur min et la valeur max de ton tableau initial est énorme, le tableau de distribution sera lui aussi énorme

=> complexité mémoire TROP importante.  2) Aucune comparaison n'est faite entre les valeurs => impossible de rendre ce tri GENERIQUE s'appliquant à tout type de données (par exemple trier un tableau de structure)car aucune fonction de comparaison n'est utilisée.  Ce type de tri est donc réservé que dans cas bien précis connue de l'utilisateur: par exemple en imagerie, trié un tableau contenant les différents niveau de gris d'une image : les valeurs seront comprises entre 0 et 255

=> le tableau de distribution sera petit, le tri sera en un temps linéaire.

Page 230: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri pigeonnier

Le meilleur quand:• peu de valeurs possibles pour les clés et/ou• enregistrements petits ou réduits à la clé• pas de collisions

Dans les deux derniers cas, il existe des implémentations très simples.

Impraticable dans tous les autres cas • mémoire occupée en N + R.

Page 231: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Dans la cas où les clefs sont bornées (c'est à dire comprises entre un minimum et un maximum connus à l'avance) et en nombre fini: algorithme de tri basique (tri par bacs).

Tri basique

n=10 L = (26, 9, 0, 25, 1, 29, 64, 16, 81, 4)

après 1(0, 1, 81 ,64 ,4 ,25, 26, 16, 9, 29)

après 2(0, 1, 4, 9, 16, 25, 26, 29, 64, 81)

Page 232: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Classer L = (a1, …, an) clés Î (0, 1, 2, ..., n2 -1)

Tri en O(nxnbChiffresMax). Exemple: nbChiffreMax = 21. tri par bacs avec clé : clé(ai) mod n2. tri par bacs avec clé : clé(ai) / n

Équivalent à un tri lexicographique avec la clé (q, r) telle que clé(ai) = q.n + r

n=10 L = (26, 9, 0, 25, 1, 29, 64, 16, 81, 4)

après 1(0, 1, 81 ,64 ,4 ,25, 26, 16, 9, 29)

après 2(0, 1, 4, 9, 16, 25, 26, 29, 64, 81)

Tri basique

Page 233: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Tri basique

• Pour trier des clefs alphabétiques, on peut effectuer un tri en base 26

• Lorsque le tableau est presque trié, il est plus efficace d'effectuer un tri par insertion (passe de finition) plutôt que de répéter le tri basique jusqu'à tri complet.

Page 234: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Le bogo tri!

Le bogo tri est basé sur le paradoxe du singe savant . Il s'agit sans nul doute de l'algorithme de tri le plus inefficace jamais créé.

Son principe est très simple. Il consiste à permuter aléatoirement les éléments du tableau tant que celui-ci n'est pas trié. Si tous les éléments du tableau sont distincts, la complexité est de O(n * n!).

Comme les ordinateurs utilisent des générateurs de nombres pseudo-aléatoires, il se peut que le tri ne se finisse jamais pour un ensemble donné.

Variante

Le bozo tri est une variante de cet algorithme. Il consiste à choisir aléatoirement 2 éléments et à les échanger. On répète cette opération tant que tous les éléments ne sont pas trié. Tout comme son compatriote, étant donné qu'on utilise des générateurs de nombres pseudo-aléatoires, il se peut que le tri ne se termine jamais.

Page 235: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Le bozo tri

triAleatoire (E[0..N[)essais = 0tant que essais < A

i = indice aléatoire dans [0..N-1[j = indice aléatoire dans ]i..N[si E [i].cle > E [j].cle

permuter(E[i],E[j]), essais = 0sinon incrémenter essais

• ne trie pas complètement le tableau.• Dans quelle circonstance voudrait-on utiliser le tri aléatoire?• Est-ce que le tri aléatoire diminue le degré de désordre?

Page 236: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

Le paradoxe du singe savant est un théorème selon lequel un singe qui tape au hasard sur le clavier d’une machine à écrire pourra presque sûrement écrire tous les livres de la Bibliothèque nationale de France. Dans l’adaptation du théorème en langue anglaise, le singe pourra presque sûrement dactylographier tous les travaux réunis de William Shakespeare.

Le résultat fut présenté par Émile Borel en 1909 dans son livre de probabilités. Ces « singes » ne sont pas des singes réels, et ne se comportent pas comme de vrais singes ; ils sont plutôt une métaphore vivante pour une machine abstraite à produire des lettres dans un ordre aléatoire, par exemple un ordinateur ou un générateur aléatoire connecté à une imprimante.

Le paradoxe du singe savant

Page 237: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

•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

Les tris dans la STL

Page 238: Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département dinformatique et de génie logiciel Édition septembre 2009

• Tous les tris présentés supposent que toutes les données à trier sont présentes en mémoire centrale.

• éléments volumineux : pour ne pas avoir à déplacer les éléments• trier une liste où le stockage est indirect (tri indirect) on trie

une listes de pointeurs sur les éléments• trier une liste de couples (clé, référence) si les clés ne sont pas

trop grosses

• Si le nombre d’objets à trier est trop grand: tri externe

• le fichier est chargé en mémoire par morceaux • pb : minimiser les entrées sorties• pb algorithmique mais surtout matériel

Tri externe