错误的版本:
def mergeSort(s):
if(len(s)<=1):
return s
else:
mid=len(s)/2
front=s[:mid]
back=s[mid:]
mergeSort(front)
mergeSort(back)
return merge(front,back)
正确版本:
def mergeSort(s):
if(len(s)<=1):
return s
else:
mid=len(s)/2
front=mergeSort(s[:mid])
back=mergeSort(s[mid:])
return merge(front,back)
为什么在错误的版本中返回原点数组?递归过程中两个版本之间有什么区别? 同样的快速排序混乱,请帮我改进代码,谢谢。如果我想在进程后返回数据而不返回原始数据,请解释我应该如何处理递归返回。
def QuickSort(seq):
if(len(seq)<=0):
return seq
else:
j=partion(seq)
left=QuickSort(seq[:j])
right=QuickSort(seq[j+1:])
答案 0 :(得分:0)
您没有返回原始数据,它是递归修改的,当您只是“查看方法”时,您只能看到该过程的第一次和最后一次迭代。
您的第一个版本错误,因为您从未“捕获”然后返回合并数组
递归返回与其他函数没有什么不同