#python #quicksort
#python #быстрая сортировка
Вопрос:
def partition(A,lo,hi):
pivot = A[hi]
i=lo
#Swap
for j in range(lo,hi-1):
if (A[j] <= pivot):
val=A[i]
A[i]=A[j]
A[j]=val
i=i 1
val=A[i]
A[i]=A[hi]
A[hi]=val
return(i)
def quicksort(A,lo,hi):
if (lo<hi):
p=partition(A,lo,hi)
quicksort(A,lo,p-1)
quicksort(A,p 1,hi)
return(A)
Если мой ввод — это [5,3,2,6,8,9,1]
вывод [1, 2, 5, 3, 8, 9, 6]
, почему это?
Ответ №1:
def partition(A,lo,hi):
pivot = A[hi]
i=lo
#Swap
for j in range(lo,hi-1):
if (A[j] <= pivot):
val=A[i]
A[i]=A[j]
A[j]=val
i=i 1
val=A[i] #was in for loop was suppose to be outside of for loop
A[i]=A[hi] #was in for loop was suppose to be outside of for loop
A[hi]=val #was in for loop was suppose to be outside of for loop
return(i)
def quicksort(A,lo,hi):
if (lo<hi):
p=partition(A,lo,hi)
quicksort(A,lo,p-1)
quicksort(A,p 1,hi)
return(A)
x = [5,3,2,6,8,9,1]
print(quicksort(x,0,len(x)-1))
Простое исправление, ваш отступ был неправильным в разделе.
Выводит
[1, 2, 3, 5, 6, 8, 9]