2016-03-26 129 views
-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]它可以工作,但我必须使用右键 我不知道为什么。它应该为所有人工作。

+2

请参阅此问题:http://stackoverflow.com/questions/27116255/python-quicksort-maximum-recursion-深度 – manglano

+0

欢迎来到SO!准确解释什么是工作而不是工作意味着什么。 – J0e3gan

回答

0

自己都不复杂;)看看我的小,真棒例如 Quick Sort

相关问题