def fusionner(gauche, droite):
resultat = []
i = j = 0
while i < len(gauche) and j < len(droite):
if gauche[i] <= droite[j]:
resultat.append(gauche[i]); i += 1
else:
resultat.append(droite[j]); j += 1
return resultat + gauche[i:] + droite[j:]
def tri_fusion(liste):
if len(liste) <= 1:
return liste
milieu = len(liste) // 2
gauche = tri_fusion(liste[:milieu])
droite = tri_fusion(liste[milieu:])
return fusionner(gauche, droite)
tri_fusion([5, 3, 8, 2, 9, 1])[1, 2, 3, 5, 8, 9]
