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