【发布时间】:2014-11-06 00:06:45
【问题描述】:
我有一个运行良好的快速排序和计数比较代码。但是每次我调用该函数时,计数都会一次又一次地累加。有什么办法可以避免吗?
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 如果我删除 count=0,我得到一个错误 global name count is not defined。
-
@user3332615 ...当然,因为它没有定义;我在哪里建议你应该删除它?
-
@SimeonVisser 你能告诉我如何使用返回值进行计算吗?我是编码新手。
标签: python python-3.x global-variables quicksort