►d'abord on crée la fonction fusion qui sert à ajouter deux listes triés de telle sorte que la somme de ses deux derniers reste trié!
def fusion(A,B) :
C=[]
i=0
j=0
while i<len(A) and j<len(B) :
if A[i] > B[j]:
C.append(B[j])
j=j+1
else :
C.append(A[i])
i=i+1
C=C+A[i:]+B[j:]
return C
►Et après on crée la fonction recursive tri_fusion qui utilise le principe diviser pour régner ! qui sert a diviser la liste en 2 et puis diviser chacune à deux et ainsi de suite jusqu'à atteindre des singletons, En suite on fait appel à la fonction précédente pour les sommer ou plutôt les fusionner !
def tri_fusion(L) :
n=len(L)
if n<=1 : return L
else : return fusion_rec(tri_fusion(L[:n//2]) , tri_fusion(L[n//2:]))
→ Attention!! les deux fonctions doivent être dans le même fichier parce que on fait l'appel à la fonction précédente !!
ainsi voilà le programme en entier que vous pouvez le tester sur votre PCs :
-----------------------------------------------------------------------------
def fusion(A,B) :
C=[]
i=0
j=0
while i<len(A) and j<len(B) :
if A[i] > B[j]:
C.append(B[j])
j=j+1
else :
C.append(A[i])
i=i+1
C=C+A[i:]+B[j:]
return C
def tri_fusion(L) :
n=len(L)
if n<=1 : return L
else : return fusion_rec(tri_fusion(L[:n//2]) , tri_fusion(L[n//2:]))
-----------------------------------------------------------------------------
l'explication de programme sera fait sur une autre page le plus tôt possible , A bientôt!
0 comments:
Enregistrer un commentaire