Enviado em 22/09/2016 - 19:52h
Estou com um problema com o quicksort que fiz, ele não está rodando quando a lista já está ordenada ou quando está inversamente ordenada. Tive que implementar para um trabalho de faculdade, mais não consigo achar o erro.
def partition(myList, start, end):
pivot = myList[start]
left = start+1
right = end
done = False
while not done:
while left <= right and myList[left] <= pivot:
left = left + 1
while myList[right] >= pivot and right >=left:
right = right -1
if right < left:
done= True
else:
temp=myList[left]
myList[left]=myList[right]
myList[right]=temp
temp=myList[start]
myList[start]=myList[right]
myList[right]=temp
return right
def quicksort(myList, start, end):
if start < end:
split = partition(myList, start, end)
quicksort(myList, start, split-1)
quicksort(myList, split+1, end)
return myList
### a lista que estou gerando é essa:
N = 100
B = range (N)
A=[]
for i in reversed(B):
A.append (B[i])
C = quicksort(A,0,len(A)-1)
print C