这是我的快速排序代码,partition
函数运行良好,但在调用递归时遇到问题。每次启动函数时pos
都会更改,然后列表限制也会更改。怎么解决?
def partition(lst, start, end):
pos=0
if len(lst)<2:
return
for i in range(len(lst[start:end])):
if lst[i] < lst[end]:
lst[i],lst[pos]=lst[pos],lst[i]
pos+=1
elif i==(len(lst[start:end])-1):
lst[end],lst[pos]=lst[pos],lst[end]
return pos
def quick_sort_recursive(lst, start, end):
pos=partition(lst, start, end)
if start<=pos<=end :
quick_sort_recursive(lst, start, pos-1)
quick_sort_recursive(lst, pos+1, end)
else:
return lst
快速排序算法的小例子:
*
*
我认为在纯递归实现中不需要分区辅助函数:
您的代码中有许多问题,以下是一些为了使其正常工作而进行的修复:
示例:
给出:
相关问题 更多 >
编程相关推荐