Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. def TriFusion(Liste):
  2. "Fonction de Tri par fusion de Liste"
  3. Liste1=[0]*8 #Crée une seconde liste pour le tri
  4. taille_segment = 1 # Taille des segments étudiés de la liste
  5. while (taille_segment <= 7): #Fusion des segments élémentaires jusqu'à obtenir une liste complète
  6. indice_debut_segment1 = 0 # Indice de debut du premier des deux segments étudié
  7. x = 0 # Indice de position dans le premier segment étudié
  8. y = taille_segment # Indice de position dans le second segment étudié
  9. for i in range(0,8): # Parcours de la liste et fusion des segments de taille taille_segment en segments de taille 2taille_segment
  10. 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
  11. Liste1[i] = Liste[x]
  12. x = x + 1 # Incrément de 1 de l'indice de la position x traitée
  13. else:
  14. Liste1[i] = Liste[y]
  15. y = y + 1 # Incrément de 1 de l'indice de la position y traitée
  16. if ((x == indice_debut_segment1 + taille_segment) and (y == indice_debut_segment1 + 2 * taille_segment)):
  17. indice_debut_segment1 = indice_debut_segment1 + 2 * taille_segment
  18. x = x + taille_segment
  19. y = y + taille_segment
  20. for i in range(0,8): # Recopie de la liste triée Liste1 dans Liste
  21. Liste[i] = Liste1[i]
  22. print("Taille du segment étudié = ", taille_segment, Liste)
  23. taille_segment = taille_segment * 2 # taille_segment est multiplié par 2 pour fusion des segments de taille supérieure
  24. return Liste
  25.  
  26. Liste = [8, 2, 5, 4, 9, 6, 1, 7]
  27. print(Liste)
  28. TriFusion(Liste)
  29. print(Liste)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement