def combine (l1,l2):
if l1 == []:
return l2
if l2 == []:
return l1
if l1[0] <= l2[0]:
return [l1[0]] + combine(l1[1:], l2)
return [l2[0]] + combine(l1, l2[1:])
Ich versuche, das eine Funktion mit dem Namen „Art“ zu üben, um rekursiv die Liste zu verschmelzen und gibt eine neue Liste (das Argument nicht mutiert), der enthält jeden Wert aus der Argumentliste, aber in sortiert/Nicht- absteigende Reihenfolge.Wie wird diese Übung durchgeführt?
def sort(l):
if l == []:
return []
else:
l1, l2 = l[0:int(len(l)/2)], l[int(len(l)/2):]
s = combine(l1, l2)
return sort(s)
aber es gibt mir immer einen Fehler:
RuntimeError: maximum recursion depth exceeded in comparison
Diese Art der Sortierung wird [merge sort] (https://en.wikipedia.org/wiki/Merge_sort) genannt. –
Mögliches Duplikat von [Python - Merge Sort Recursive Algorithm] (http://stackoverflow.com/questions/19992992/python-merge-sort-recursive-algorithm) –