我有一个快速排序和计数比较的代码,完美的工作。但每次我调用这个函数时,计数都会一次又一次地加起来。有什么办法可以避免这种情况?计数比较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