0
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:])
"sort"という名前の関数を定義して再帰的にリストをマージし、引数リストからすべての値を含む新しいリスト(引数を変更しない)を返します。ソートされた/降順。この種の練習を行うには?
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)
はしかし、それは常に私にエラーを与える:l
は、任意の項目を持っている場合
RuntimeError: maximum recursion depth exceeded in comparison
この種類の並べ替えは、[マージソート](https://en.wikipedia.org/wiki/Merge_sort)と呼ばれます。 –
[Python - Merge Sort Recursive Algorithm]の可能な複製(http://stackoverflow.com/questions/19992992/python-merge-sort-recursive-algorithm) –