一个菜鸟问题:我正在为python中的列表实现合并排序。但是,我在执行的最后一步之一一直遇到问题,我将3个列表传递给一个函数,其中两个列表显示为“ None”类型,即使它们在调试器中显示为预期值。
老实说,我需要深入研究递归(调试器非常适合我,我刚刚学到了),因为这对于我作为学生来说是一个绊脚石。但是,由于作业要在午夜进行(这是大问题集中的一部分),所以我没有时间去深入研究今晚的实验,尽管我会在不久的将来进行实验。
这是我的代码:
def swap(_a, _b):
if _a <= _b:
return (_a, _b)
else:
return (_b, _a)
def merge(*args):
print("DEBUG: merge() reachable")
B, C, A = args[0], args[1], args[2]
i, j, k = 0, 0, 0
while i < len(B) and j < len(C):
if B[i] <= C[j]:
A[k] = B[i];
i += 1
else:
A[k] = C[j];
j += 1
k += 1
if i == len(B):
A[k:] = C[j:]
else:
A[k:] = B[i:]
#print("A is ", A)
return(A)
def merge_sort(A):
if len(A) <= 2:
return (swap(A[0], A[1]))
else:
ln = len(A) // 2
B, C = A[:ln], A[ln:]
merge(merge_sort(B), merge_sort(C), A)
def main():
# merge([5, 7, 9, 11], [2, 4, 5, 7], [0 for i in range(8)])
merge_sort([3, 5, 7, 9, 8, 6, 4, 2])
if __name__ == "__main__":
main()
以下是代码段,调试和我得到的错误消息:https://ibb.co/w76tsJvhttps://ibb.co/92rQwNMhttps://ibb.co/qFKfC8p。
功能