我有一個快速排序和計數比較的代碼,完美的工作。但每次我調用這個函數時,計數都會一次又一次地加起來。有什麼辦法可以避免這種情況?計數比較quicksort沒有全局Python
count = 0
def quicksort(A, left = None, right =None):
global count
if left is None:
left = 0
if right is None:
right = len(A)
if left >= right:
return
p =A[left]
i = left +1
for j in range(left+1,right):
if A[j] < p:
A[i] , A[j] = A[j], A[i]
i = i + 1
A[left] , A[i-1] = A[i-1], A[left]
quicksort(A,left,i-1)
count += i-1-left
quicksort(A,i,right)
count += right-i-1
return A,count+len(A)
這正是你要求它做的;你永遠不會重置'count = 0'。 – jonrsharpe 2014-11-05 09:10:38
特別是,如果您希望此快速排序實現計算比較次數,請考慮將其計算爲返回值 – 2014-11-05 09:22:42
@jonrsharpe如果我刪除了count = 0,則得到的錯誤全局名稱計數未定義。 – 2014-11-05 09:37:01