下实现QuickSort
运行进入无限循环快速排序:无限循环
def partition(arr, lo, hi):
pivot = lo
for i in range(lo+1, hi+1):
if arr[i] <= arr[lo]:
pivot += 1
arr[i], arr[pivot] = arr[pivot], arr[i]
arr[lo], arr[pivot] = arr[pivot], arr[lo]
return pivot
def quickSort(arr, lo=0, hi=None):
if not hi: hi = len(arr) - 1
if lo >= hi: return
pivot = partition(arr, lo, hi)
quickSort(arr, lo, pivot-1)
quickSort(arr, pivot+1, hi)
arr = [5,3,2,-9,1,6,0,-1,9,6,2,5]
quickSort(arr)
print(arr)
我推测partition
功能是罪魁祸首。无法弄清楚这个错误。
谢谢
您在'quicksort()'内调用'quicksort()'而不实现某种方式来停止无限递归。 – RobertR
他已经有了这个结束条件。 – prabodhprakash
如果您发现它有用,请将答案标记为正确。 – prabodhprakash