2016-03-26 131 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

相關問題