Я просто не знаю, где это пойдет не так с моим кодом. Я пытаюсь использовать метод Quicksort для сортировки массива в порядке возрастания, похоже, не работает.Quicksort Python
def quicksort(array, left, right):
if left < right:
pivot = partition(array, left, right)
quicksort(array, left, pivot - 1)
quicksort(array, pivot + 1, right)
return array
def partition(array, left, right): #left and right are indices
#pick the pivot as the middle element
pivot = array[round((left + right)/2)]
while left < right:
while array[left] < pivot:
left += 1
while array[right] > pivot:
right -= 1
if left < right:
# swap the 2 elements
array[left], array[right] = array[right], array[left]
left += 1
right -= 1
# swap the pivot and the last element (where the 2 pointers meet each other)
array[left], array[array.index(pivot)] = array[array.index(pivot)], array[left]
return left
так, когда
print(quicksort([4, 6, 8, 1, 3], 0, 4))
результат
[3, 4, 6, 1, 8]
И в чем ваш вопрос? – Dmitry
Ваш код фактически не запускается, и если вы исправляете очевидные ошибки, он просто попадает в бесконечный цикл. Но я подозреваю, что ваш 'if left
Вы могли бы объяснить, в чем ваша цель с помощью этого кода? Каков ожидаемый результат ? – Dadep