30
Programmation avancée Leçon n. 16 – Algorithmes de Tri : Algorithmes avancés de tri Prof. Karim Baïna ENSIAS آ PROGRAMMATION AVANCEE PROGRAMMATION AVANCEE

Baina Lec16 ModuleIV Sorting Algorithms 3 Advanced Sorting Algorithmes

Embed Size (px)

Citation preview

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

PROGRAMMATION AVANCEEProf. Karim BanaENSIAS

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Leon 16 : ALGORITHMES AVANCES DE TRI

Prof. Karim BanaENSIAS

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Plan de la leonTri par partition-fusion Tri rapide (quick sort) Tri par le tas (heap sort) Synthse

Prof. Karim BanaENSIAS

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Tri par partitionfusionProf. Karim BanaENSIAS

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Tri par partition-fusion DescriptionOn dispose dune squence S de n lments Le tri par partition-fusion suit le paradigme de diviser pour rsoudre Diviser : partitionner S en deux soussquences S1 et S2 de taille n/2 et trier rcursivement S1 et S2 Rsoudre : fusionner S1 et S2 en une unique squence trieProf. Karim BanaENSIAS

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Tri par partition-fusion Illustration77 22 99 44 33 88 66 11 1 2 3 4 6 7 8 9 7 2 9 43 8 6 1 1 2 3 4 6 7 8 9 1 2 3 4 6 7

7 2 9 4 2 4 7 9 7 2 99 44 2 4 7 9 7 29 4 2 4 7 9 2 4

3 8 6 1 1 3 8 6 3 8 6 1 1 3 6 8 3 8 6 1 1 3 8 6

72 2 7 7 22 2 7 722 7 7

9 4 4 9 9 4 4 9

3 8 3 8 3 8 3 8 3 8 3 8

6 1 1 6 6 1 1 6 6 1 1 6

77 77

Prof. Karim BanaENSIAS

22 22

99 99

44 44

33 33

88 88

66 66

11 11

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Tri par partition-fusion Implantationvoid Tri_par_partition_fusion (int * t, int d, int f){ if (f > d) { int m = (d + f) / 2; // partition Tri_par_partition_fusion(t, d, m); Tri_par_partition_fusion(t, m+1, f); Fusion(t, d, m, f); // fusion } }Prof. Karim BanaENSIAS

Leon n. 16 Algorithmes de Tri : Algorithmes avancs de tri

Programmation avance

Tri par partition-fusion Implantationvoid Fusion (int * t, int d, int m, int f){ void Fusion (int * t, int d, int m, int f){ int * fus = (int*)malloc((f-d+1)*sizeof(int)); int * fus = (int*)malloc((f-d+1)*sizeof(int)); int ii = d, jj = m+1, k = 0; int = d, = m+1, k = 0; while ((i