【发布时间】:2019-10-11 23:08:09
【问题描述】:
我尝试将 Quicksort 代码从 Java 转换为 Python,但没有成功。有人可以告诉我问题出在哪里吗?我得到了“比较中超出了最大递归深度”,但在我的示例中,我只想订购少于 10 个整数,所以我认为这不是真正的问题......
def help(array, low, high):
pivot = array[low]
fromhigh = high
fromlow = low
while True:
while(array[fromhigh]>pivot):
fromhigh = fromhigh-1
while(array[fromlow]<pivot):
fromlow = fromlow+1
if(fromlow<fromhigh):
array[fromlow], array[fromhigh] = array[fromhigh], array[fromlow]
else:
return fromhigh
def quickSort(array, low, high):
if (low<=high):
pivot = help(array, low, high)
quickSort(array, low, pivot)
quickSort(array, pivot + 1, high)
#Testarray
array = [10, 7, 2 , 8, 9, 1, 5, 11, 13]
n = len(array)
quickSort(array, 0, n-1)
print("Sorted Array:")
for i in range(n):
print("%d" % array[i]),
【问题讨论】:
-
在帮助函数中,当你退出while语句时没有条件,所以你需要在那里添加条件,当fromlow>fromhigh thn退出while loop else交换元素
标签: python sorting recursion quicksort