Я очень новичок в программировании и хотел реализовать 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]