【发布时间】:2020-06-29 12:52:24
【问题描述】:
我正在尝试递归地对列表元素进行分区(如分而治之)并因此打印切片的元素,但突然发现意外异常(在输出中的第 6 行及以后)。
def Mergesort(a, l, r):
if(l<r):
mid = (r+l+1) // 2
print(a)
Mergesort(a[l : mid], l, mid-1)
Mergesort(a[mid : r+1], mid, r)
a = [8, 3, -2, 6, 7, 4, 1, 2, -1, 0, 9, 12, 11, 5]
Mergesort(a, 0, len(a)-1)
输出:
[8, 3, -2, 6, 7, 4, 1, 2, -1, 0, 9, 12, 11, 5]
[8, 3, -2, 6, 7, 4, 1]
[8, 3, -2]
[3, -2]
[6, 7, 4, 1]
[1]
[]
[2, -1, 0, 9, 12, 11, 5]
[]
[]
[]
[]
[]
【问题讨论】:
-
您的预期输出到底是什么?
-
[8, 3, -2, 6, 7, 4, 1, 2, -1, 0, 9, 12, 11, 5] [8, 3, -2, 6, 7 , 4, 1] [8, 3, -2] [3, -2] [6, 7, 4, 1] [6, 7] [4, 1] [2, -1, 0, 9, 12, 11, 5] [2, -1, 0] [-1, 0] [9, 12, 11, 5] [9, 12] [11, 5]
标签: python recursion divide-and-conquer