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 fusion(gauche, droite)

def fusion(gauche, droite):
    resultat = []
    i = 0
    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

    resultat.extend(gauche[i:])
    resultat.extend(droite[j:])

    return resultat

# Exemple d'utilisation
liste = [38, 27, 43, 3, 9, 82, 10]
liste_triee = tri_fusion(liste)
print("Liste triée :", liste_triee)