下實現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