【发布时间】:2019-12-27 00:50:23
【问题描述】:
我正在尝试使用 python 3.7 实现合并排序。为此,我编写了一个 merge() 函数和一个递归 sort() 函数。这里 sort() 函数打破一个列表,直到它有一个元素。但问题是解释器无法将合并函数的参数 m 和 n 识别为列表,因此显示以下错误:
def merge(m, n):
x = y = 0
v = []
while x < len(m) and y < len(n):
if m[x] < n[y]:
v.append(m[x])
x = x + 1
elif m[x] > n[y]:
v.append(n[y])
y = y + 1
else:
v.append(m[x])
x, y = x + 1, y + 1
while x < len(m):
v.append(m[x])
x = x + 1
while y < len(n):
v.append(n[y])
y = y + 1
return v
def sort(a):
if len(a) == 1:
return a
else:
merge(sort(a[:len(a) // 2]), sort(a[len(a) // 2:]))
x = list(range(10, 0, -1))
sort(x)
print(x)
预期结果 id 排序列表。
但是python显示这个错误:
Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 排序(x) 文件“”,第 5 行,排序中 合并(排序(a[:len(a) // 2]), sort(a[len(a) // 2:])) 文件“”,第 5 行,排序中 合并(排序(a[:len(a) // 2]), sort(a[len(a) // 2:])) 文件“”,第 5 行,排序中 合并(排序(a[:len(a) // 2]), sort(a[len(a) // 2:])) 文件“”,第 4 行,在合并中 当 x
【问题讨论】:
标签: recursion python-3.7 mergesort