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
Top Related