Informatique TD/ TP 4.3 Tri fusion
Lycée Jules Ferry Cannes Page 1 sur 2 TSI2
1 Compréhension de l'algorithme
1) Soit t = [15; 2; 4; 8; 17; 23] = t[0 : 6].
Dérouler étape par étape l’algorithme de tri de t en complétant les actions attendues et l'évolution
du fractionnement de t.
Compléter ensuite la remone avec la fusion des partitions.
Action
Suivi de t
(appels récursifs)
tmp respectifs
(remone : fusion)
[15
;
2
;
4
;
8
;
17
;
23]
[2; 4; 8; 15; 17; 23]
Appel tri t[0:
3
3
:
6
]
,
4
][
8
,
17,23]
[2,4,15] [8,17,23]
Appel tri t[0:1] t[1:3] t[3:4] t[4:6]
[15][2,4] [8][17,23] [15][2,4] [8][17,23]
Appel tri t[1:2] t[2:3] t[4:5] t[5:6]
[15] [2][4] [8] [17][23]
2) Détailler l'algorithme de la dernière fusion en complétant le tableau suivant avec m=3 et
t =[2,4,15,8,17,23]
k
i
j
tmp
0
3
[0, 0, 0, 0, 0, 0]
0
1
3
[2, 0, 0, 0, 0, 0]
1
2
3
[2, 4, 0, 0, 0, 0]
2
2
4
[2, 4, 8, 0, 0, 0]
3
3
4
[2, 4, 8, 15, 0, 0]
4
3
5
[2, 4, 8, 15, 17, 0]
5
3
6
[2, 4, 8, 15, 17, 23]
6
2 Fusion de deux portions adjacentes triées
3) Ecrire une fonction fusion qui prend en argument un tableau t, et deux entiers g et d, et qui
fusionne les portions t[g : m] et t[m : d] (supposées triées), en utilisant tmp pour copier
provisoirement les éléments, puis les replacer dans t[g : d].
3 Tri fusion récursif
4) Dérouler étape par étape l’algorithme de tri fusion du tableau t = [69; 35; 95; 53; 54; 40; 3; 36; 74]:
5) Ecrire une fonction cursive tri_fusion_rec qui prend en argument un tableau t, un tableau tmp
(de même taille que t), deux entiers g , d, et qui réalise un tri fusion de la portion t[g : d], en
utilisant toujours le même tableau tmp comme tampon lors de chaque fusion (on utilisera en boîte
noire la fonction fusion précédemment écrite).
6) Ecrire enfin une procédure tri_fusion qui prend en argument un tableau t et réalise un tri fusion du
tableau complet.
4 Optimisation du tri fusion
Une façon d’optimiser la fonction tri_fusion consiste à éviter la fusion lorsque, à l’issue des deux appels
récursifs, les éléments de la moitié gauche se trouvent être tous plus petits que les éléments de la moitié
droite. On le teste facilement en comparant l’élément le plus à droite de la moitié gauche et l’élément le
plus à gauche de la moitié droite.
7) Modifier la fonction tri_fusion en suivant cette idée.
Informatique TD/ TP 4.3 Tri fusion
Lycée Jules Ferry Cannes Page 2 sur 2 TSI2
On pourra remarquer à partir de la fonction moyenne (du fichier ressources à copier ou à importer) qui
renvoie la durée moyenne d'une exécution que les bénéfices temporels annoncés sont pour le moins
modérés avec 1000 termes à trier.
5 Optimisation 2
On peut terminer le tri fusion par un tri par insertion lorsque le nombre d’éments à trier devient petit,
c’est-à-dire inférieur à une constante C fixée à lavance.
8) Modifier encore la fonction tri_fusion pour qu’elle procède ainsi (on utilisera en boîte noire la
fonction tri_insertion implémentée au TP 4.1 ).
Ressources : Damien BROIZAT (TSI2 Cannes)
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !