Я пытаюсь реализовать алгоритм быстрой сортировки с использованием Python. Я думаю, что сделал все правильно, но кажется, что есть проблема с моим кодом, каждый раз, когда я запускаю код, он не работает, пожалуйста, вы можете помочь мне найти проблемус моим кодом.
def quicksort(alist,first,last):
if first < last:
split = partition(alist,first,last)
quicksort(alist,first,split-1)
quicksort(alist,split+1,last)
def partition(arr,first,last):
pivot_val = arr[first]
rightmark = first +1
leftmark = last
done = False
while not done:
while leftmark <= rightmark and arr[leftmark] <= pivot_val:
leftmark +=1
while arr[rightmark] >= pivot_val and rightmark >= leftmark:
rightmark -=1
if rightmark < leftmark:
done = True
else:
tmp = arr[leftmark]
arr[leftmark] = arr[rightmark]
arr[rightmark] = tmp
tmp = arr[rightmark]
arr[rightmark] = arr[first]
arr[first] = tmp
return rightmark
lst = [22,54,33,11,87,76,1,3]
quicksort(lst,0,len(lst)-1)
print(lst)
вывод выглядит так:
[54, 22, 11, 33, 76, 87, 1, 3]