def fusion(L1, L2):
if L1 == [] or L2 == []:
return ...
if L1[0] <= L2[0]:
return ... + fusion(L1[1:], L2)
return [L2[0]] + ...
def tri_fusion(liste):
if len(liste) <= 1:
return ...
milieu = ...
demi_liste1 = liste[...]
demi_liste2 = liste[...]
demi_liste1_triee = ...
demi_liste2_triee = ...
return ...(demi_liste1_triee, demi_liste2_triee) def fonc():
# Tests fonction tri_fusion
assert(tri_fusion([7]) == [7]), "Test 1 non réussi"
assert(tri_fusion([]) == []), "Test 2 non réussi"
assert(tri_fusion([9, 7, 5, -4]) == [-4, 5, 7, 9]), "Test 3 non réussi"
assert(tri_fusion([9, 2, 14, -4]) == [-4, 2, 9, 14]), "Test 4 non réussi"
assert(tri_fusion([4, 7, 14, 20]) == [4, 7, 14, 20]), "Test 5 non réussi"
print(tri_fusion([5, 8, 12, 1])) # [1, 5, 8, 12]
def fusion(L1, L2):
if L1 == [] or L2 == []:
return L1 + L2
if L1[0] <= L2[0]:
return [L1[0]] + fusion(L1[1:], L2)
return [L2[0]] + fusion(L1, L2[1:])
def tri_fusion(liste):
if len(liste) <= 1:
return liste
milieu = len(liste) // 2
demi_liste1 = liste[:milieu]
demi_liste2 = liste[milieu:]
demi_liste1_triee = tri_fusion(demi_liste1)
demi_liste2_triee = tri_fusion(demi_liste2)
return fusion(demi_liste1_triee, demi_liste2_triee)