Le tri par fusion procède comme suit:
Mise en application du tri par fusion sur une liste d'entiers
Cette méthode de tri, basée sur la technique diviser pour régner, découpe récursivement la liste à trier en deux sous-listes. Si une sous-liste est vide ou possède un seul élément, elle est triée par définition. Sinon, la sous-liste est découpée en deux. Une fois les deux sous-listes triées, l'opération principale de l'algorithme, nommée la fusion, consiste à réunir les sous-listes triées en une seule. Cette fusion se fait selon l'observation suivante: le plus petit élément de la nouvelle liste à construire est soit le plus petit élément de la première sous-liste, soit le plus petit élément de la deuxième sous-liste. Ainsi, on peut construire la nouvelle liste élément par élément en retirant tantôt le premier élément de la première sous-liste, tantôt le premier élément de la deuxième sous-liste après les avoir comparés. Une fois l'une des sous-listes vide, il suffit d'ajouter le reste de l'autre sous-liste en queue de la nouvelle liste. La figure suivante illustre cet algorithme:
Déroulement du tri par fusion sur une liste d'entiers
Le découpage de la liste à trier nécessite de la mémoire supplémentaire mais la complexité de cet algorithme est nettement meilleure que celle des algorithmes précédents en terme de comparaisons réalisées.
En vous basant sur les exemples présentés ci-dessus, répondez à chacun des points suivants:
[3, 4, 6, 2, 5, 1, 8, 7] ci-dessus.[91, 17, 2, 35, 54]. Au besoin, recourez au lien ci-dessus ou au programme TestFusion vous permettant de valider votre réponse.TriFusion([3, 4, 2, 1]).croissante = [1, 2, 3, 4, 5, 6, 7, 8]decroissante = [8, 7, 6, 5, 4, 3, 2, 1]aleatoire = [54, 26, 93, 31, 77, 17, 44, 55]|