python实现归并排序时报错

错误是:objectoftype'NoneType'hasnolen()具体代码如图... 错误是:object of type 'NoneType' has no len()具体代码如图 展开
 我来答
紫薇参星
科技发烧友

2019-05-21 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3599万
展开全部

因为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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式