Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def TriFusion(Liste):
- "Fonction de Tri par fusion de Liste"
- Liste1=[0]*8 #Crée une seconde liste pour le tri
- taille_segment = 1 # Taille des segments étudiés de la liste
- while (taille_segment <= 7): #Fusion des segments élémentaires jusqu'à obtenir une liste complète
- indice_debut_segment1 = 0 # Indice de debut du premier des deux segments étudié
- x = 0 # Indice de position dans le premier segment étudié
- y = taille_segment # Indice de position dans le second segment étudié
- for i in range(0,8): # Parcours de la liste et fusion des segments de taille taille_segment en segments de taille 2taille_segment
- if ((x < indice_debut_segment1 + taille_segment) and (y < indice_debut_segment1 + 2 * taille_segment) and (Liste[x] < Liste[y]) or (y == indice_debut_segment1 + 2 * taille_segment)): # Tri si valeur dans le segment 1 est supérieur à celle dans le segment 2
- Liste1[i] = Liste[x]
- x = x + 1 # Incrément de 1 de l'indice de la position x traitée
- else:
- Liste1[i] = Liste[y]
- y = y + 1 # Incrément de 1 de l'indice de la position y traitée
- if ((x == indice_debut_segment1 + taille_segment) and (y == indice_debut_segment1 + 2 * taille_segment)):
- indice_debut_segment1 = indice_debut_segment1 + 2 * taille_segment
- x = x + taille_segment
- y = y + taille_segment
- for i in range(0,8): # Recopie de la liste triée Liste1 dans Liste
- Liste[i] = Liste1[i]
- print("Taille du segment étudié = ", taille_segment, Liste)
- taille_segment = taille_segment * 2 # taille_segment est multiplié par 2 pour fusion des segments de taille supérieure
- return Liste
- Liste = [8, 2, 5, 4, 9, 6, 1, 7]
- print(Liste)
- TriFusion(Liste)
- print(Liste)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement