我正在尝试在 Python 中实现快速排序,但输出列表要么跳过元素,要么重复它们

I am trying to implement quicksort in Python but the output list is either skipping elements or repeating them

我对编程还很陌生,想在看完书中给出的图表后实现 quicksort。但是,我没有得到所需的排序列表,因为某些元素未添加或重复。我怀疑问题出在我如何使用递归对列表进行排序。

array = [52, 5, 45, 2, 78, 1, 9, 57, 3]
global less_pivot_list
global greater_pivot_list

def quicksort(array):
    global less_pivot_list
    global greater_pivot_list

    if len(array) < 2:
        return array
    elif len(array) == 2:
        if array[0] > array[1]:
            temp = array[0]
            array[0] = array[1]
            array[1] = temp
        return array 
    else:
        pivot_index = 0
        pivot = array[pivot_index]
        list_pivot = [pivot]
        less_pivot_list = [item for item in array if pivot > item]
        greater_pivot_list = [item for item in array if pivot < item]   
        return quicksort(less_pivot_list) + list_pivot + quicksort(greater_pivot_list)

output = quicksort(array)
print(output)

这是输出:[1, 2, 3, 5, 3, 52, 3]

移除函数内的全局声明

array= [52,5,45,2,78,1,9,57,3]
less_pivot_list = []
greater_pivot_list = []

def quicksort(array):

   if len(array)<2:
       return array
   elif len(array)==2:
       if array[0] > array[1]:
           temp = array[0]
           array[0] = array[1]
           array[1]= temp
       return array 
   else:
    pivot_index=0
    pivot=array[pivot_index]
    list_pivot=[pivot]
    less_pivot_list = [item for item in array if pivot > item]
    greater_pivot_list = [item for item in array if pivot < item]   
    return quicksort(less_pivot_list) +list_pivot+ quicksort(greater_pivot_list)

output=quicksort(array)
print(output)

这会生成正确排序的输出。