我是python的新手,所以爲了熟悉語法,我正在編寫我已經在C++和Java中創建的程序。Python語言中的快速排序錯誤
def swap(p , q):
temp = array[p]
array[p] = array[q]
array[q] = temp
def partition(beg , end):
l = beg
x = array[beg]
for j in range(l+1,end) :
if(array[j] <= x):
l += 1
swap(l , j)
swap(l, beg)
return l
def quick(beg , end):
if(beg <= end):
mid = partition(beg , end)
quick(beg , mid - 1)
quick(mid + 1 , end)
array = []
n=int(input("\nEnter the number of terms: "))
print("\nEnter the terms")
for i in range(0,n):
val = int(input())
array.append(val)
print("\nBefore Sorting: ")
print(array)
quick(0 , n)
print("\nAfter Sorting: ")
print(array)
這是我在Python中進行快速排序的代碼。它的工作在C++中使用相同的範圍,但它顯示了以下錯誤
**
回溯(最近最後一次通話):
- 文件 「蟒蛇」,第28行,在
- 文件 「蟒蛇」,第17行,在快速
- 文件 「蟒蛇」,第17行,在快速
- 文件 「蟒蛇」,第17行,在快速
- [上線重複990次以上]
- 文件 「蟒」,第16行,在快速
- 文件 「蟒」,第8行,在分區
- RecursionError:最大遞歸深度相比 超過
請幫忙。謝謝。
你使用了什麼樣的n值? –
這可能無助於解決這個問題,但風格提示:通過執行'array [a],array [b] = array [b],array [a]' – Kevin
可以交換Python中的兩個值而不使用臨時值那麼,一個明顯的問題是你的'partition'函數*總是返回*'(n-1)',因爲這是'return i'中的'i'的值,指的是** global **'i',這是最後一次在for循環中設置的,對於範圍(0,n)中的我:',你的意思是'return l'?但是你真的不應該依賴全球化的狀態。 –