Files
TermNSI/Recursivité/18_Diviser_pour_regner/TP/tri_fusion.py
2024-09-02 18:32:04 +02:00

43 lines
1.0 KiB
Python

def fusion(t1,t2):
"""Fusionne deux tableau trié en un seul.
param t1 (tab) : premier tableau trié
param t2 (tab) : second tableau trié
return (tab) : fusion des deux tableaux"""
global compteur
tab_final = []
ind1 = 0
ind2 = 0
while ind1<len(t1) and ind2<len(t2):
if t1[ind1] < t2[ind2] :
tab_final.append(t1[ind1])
ind1+=1
else:
tab_final.append(t2[ind2])
ind2+=1
while ind1<len(t1) :
tab_final.append(t1[ind1])
ind1+=1
while ind2<len(t2) :
tab_final.append(t2[ind2])
ind2+=1
return tab_final
def tri_fusion(t):
long = len(t)
if long <= 1 :
return t
else :
t1 = []
t2 = []
i = 0
moitie = long//2
while i < moitie :
t1.append(t[i])
t2.append(t[i+moitie])
i+=1
if (i+moitie)<(long):
t2.append(t[i+moitie])
t1 = tri_fusion(t1)
t2 = tri_fusion(t2)
return fusion(t1,t2)