Tri_Fusion [PYTHON]

dimanche 13 novembre 2016

La tri fusion est un des types des tris dans l'histoire d'algorithme , il est caractérisé par son principe : diviser pour régner ! Et alors il est parmi les tris rapides ;


►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