Witajcie,
Prosiłbym o pomoc, gdyż męczę się już z tym kupę czasu i nie mogę dojść do winy problemu. Zadanie polega na implementacji algorytmu QuickSort, który zwróci nam posortowaną tablicę, nie zmieniając nic w tabeli wejściowej. Mógłby ktoś spojrzeć i powiedzieć mi gdzie popełniłem błąd? Algorytm w tym przypadku sortuje prawidłowo do pewnego momentu, lecz z niewiadomych mi przyczyn nie przerywa w tym momencie i próbuje jeszcze kilkukrotnie dalej sortować dając na wyjściu zły wynik. O dziwo problem nie występuje, gdy nie próbuję zrobić wewnątrz funkcji kopii listy i operuję na oryginalnej tablicy.
Z góry bardzo dziękuję :)
from typing import List
Y = [2, 25, 9, 14, 1, 3, 10] #tablica do posortowania
def quicksort(I: List[int], start: int, stop: int) -> List[int]:
copy_I = I[:] #kopia listy na której będę operował
i = start
j = stop
pivot = copy_I[(start + stop) // 2]
while i <= j:
while copy_I[i] < pivot:
i += 1
while copy_I[j] > pivot:
j -= 1
if i <= j:
copy_I[i], copy_I[j] = copy_I[j], copy_I[i]
i += 1
j -= 1
if start < j:
quicksort(copy_I, start, j)
if i < stop:
quicksort(copy_I, i, stop)
return copy_I
print(quicksort(Y,0,len(Y)-1))