Python计数在快速排序函数中的更改和比较
我制作了一个著名的快速排序函数,我想实现更改和比较计数器,但我不知道如何实现。我知道如何在两个函数中传递变量,但当我在递归函数中传递变量时,我不知道它是如何工作的Python计数在快速排序函数中的更改和比较,python,function,quicksort,Python,Function,Quicksort,我制作了一个著名的快速排序函数,我想实现更改和比较计数器,但我不知道如何实现。我知道如何在两个函数中传递变量,但当我在递归函数中传递变量时,我不知道它是如何工作的 def Partition(array, low, high): pivot = array[high] i = low - 1 for j in range(low, high): if array[j] <= pivot: i += 1
def Partition(array, low, high):
pivot = array[high]
i = low - 1
for j in range(low, high):
if array[j] <= pivot:
i += 1
array[i], array[j] = array[j], array[i]
array[i + 1], array[high] = array[high], array[i + 1]
return i + 1
def QuickSort(array, low, high):
if low < high:
pivot = Partition(array, low, high)
QuickSort(array, low, pivot - 1)
QuickSort(array, pivot + 1, high)
return array
print(QuickSort(array, 0, len(array) - 1))
一种非常简单的方法是在全局范围内使用
.changes=0
和.compares=0
定义一个stats
对象,在函数内部使用global stats
,然后在需要的地方随意递增。注意:函数的Python风格是snake\u case
。看见
def test2(changes, compares):
changes += 1
compares += 1
return changes, compares
def test1(changes = 0, compares = 0):
changes, compares = test2(changes, compares)
return changes, compares