-1
我写了一个简单的快速排序,但我有问题。QuickSort - RuntimeError:超过最大递归深度
def partition(A, p, r):
x = A[r]
i = p
j = r
while True:
while A[i] < x:
i+=1
while x < A[j]:
j-=1
if i < j:
A[i], A[j] = A[j], A[i]
i += 1
j -= 1
else:
return j
def quickSort(A, p, r):
if p<r:
q = partition(A, p, r)
quickSort(A, p, q-1)
quickSort(A, q+1, r)
def quickSortMainReq(A):
quickSort(A, 0, len(A)-1)
return A
一切都很好,直到你没有大阵。 例如print quickSortMainReq(range(994))
正在工作。 print quickSortMainReq(range(995))
不是。 当我将我的x设置为[(p + r)// 2]它可以工作,但我必须使用右键 我不知道为什么。它应该为所有人工作。
请参阅此问题:http://stackoverflow.com/questions/27116255/python-quicksort-maximum-recursion-深度 – manglano
欢迎来到SO!准确解释什么是工作而不是工作意味着什么。 – J0e3gan