boa tarde, estou tentando programar um algoritmo quicksort baseado em um modelo que ví num vídeo. O problema é que na minha função partition o programa está me retornando o valor incorreto para usar na recursão do quicksort.
def partition(array):
pivot = array[-1]
i = 0
j = len(array)-1
while i<j:
while array[i]<pivot and i<len(array)-1:
i+=1
while array[j]>=pivot and j>0:
j-=1
if i<j:
array[i],array[j] = array[j],array[i]
if array[i]>array[-1]:
array[i],array[-1] = array[-1],array[i]
#aqui mandei imprimir o valor de i para ver se estava saindo corretamente o novo índice do pivô e está
print(i)
#mas aqui ele retorna o valor do último índice da lista
return i
#aqui chamei a funçao e imprimi o retorno pra conferência. Ele organiza a lista de acordo com o pivô e reposiciona o pivô mas não retorna o seu indice corretamente
array = [7,9,8,12,4,5,7,52,43,64,21,19,40]
partition(array)
print(partition(array))
print(array)
alguém tem alguma ideia do motivo pra isso?
Desde já, agradeço!