J'essaie de créer un tri d'insertion avec des listes liées. Voici ce que j'ai:Tri de l'insertion avec une liste chaînée
def insertion_sort(a):
"""
-------------------------------------------------------
Sorts a list using the Insertion Sort algorithm.
Use: insertion_sort(a)
-------------------------------------------------------
Preconditions:
a - linked list of comparable elements (?)
Postconditions:
Contents of a are sorted.
-------------------------------------------------------
"""
unsorted = a._front
a._front = None
while unsorted is not None and unsorted._next is not None:
current = unsorted
unsorted = unsorted._next
if current._value < unsorted._value:
current._next = unsorted._next
unsorted._next = current
unsorted = unsorted._next
else:
find = unsorted
while find._next is not None and current._value > find._next._value:
find = find._next
current._next = find._next
current = find._next
a._front = unsorted
return a
Je crois que ce que j'ai est correct en termes de tri. Cependant quand j'essaye de lire la liste dans le module principal j'obtiens un tas de valeurs None
.
Dans ce cas, le tri par insertion est et non en créant une nouvelle liste lors du tri. Au contraire, il déplace tous les éléments triés vers le «front».
Pour résumer, j'ai deux problèmes: Je ne suis pas sûr si le tri d'insertion est correct, et il y a des problèmes avec la liste retournée a
car il contient None
valeurs. Merci à l'avance
'a' est une liste chaînée transmise depuis le module principal. Est-ce que cela change quelque chose – user3170251
si 'a' a une structure similaire à ci-dessus alors ça devrait aller, l'algorithme fonctionne donc vous avez juste besoin d'adapter votre structure à cela. – AChampion