python实现归并排序时报错
发布网友
发布时间:2022-04-18 07:57
我来回答
共1个回答
热心网友
时间:2022-04-18 09:26
因为merge_sort函数没有返回值,所以l1=merge_sort(left)和r1=merge_sort(right)中出l1和r1没有类型的错误,加一个返回值return li就没问题了.
完整的Python程序如下(改动的地方见注释)
def merge_sort(li):
if len(li)==1:
return li #这里return改成return li
mid=len(li)//2
left=li[:mid]
right=li[mid:]
l1=merge_sort(left)
r1=merge_sort(right)
return merge(l1,r1)
def merge(left,right):
result=[]
while len(left)>0 and len(right)>0:
if left[0]<=right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
result+=left
result+=right
return result
a=[2,39,92,19,28,32,85,53]
print(merge_sort(a))
源代码(注意源代码的缩进)
追问非常感谢,还有一个问题想问一下:这个l1,r1递归之后到底接受的是什么(假如最开始传入的list=【1,2,3,4,5,6】)
追答l1和r1接受的是分成左右两边的两个list,直到list的长度为1