Столкнулся с проблемой во время кодирования алгоритма быстрой сортировки на Python. Массив делится на множества меньше медианы и больше медианы, после прохождения циклов. Далее, вызываю рекурсивно метод для множеств меньше и больше медианы. Алгоритм до конца не отрабатывает. Я думаю это из-за того, что при вызове рекурсии возвращается новый список, после среза mas, а не изменятся текущий.
Как рекурсивно можно вызвать метод для меньшей и большей части списка еще? думал преобразовать строку в список, но это не есть рационально. Помогите, советом. Спасибо, если что =)
Код:
def sort_quick(mas):
l = 0 # минималный индекс
r = len(mas) - 1 # максимальный индекс
m = round((r + l)/2) # выбор медианны
while l <= r:
while mas[l] < mas[m]:
l += 1
while mas[r] > mas[m]:
r -= 1
[mas[l], mas[r]] = [mas[r], mas[l]]
l += 1
r -= 1
if len(mas[0:m]) > 1:
sort_quick(mas[0:m])
if len(mas[m+1:len(mas)]) > 1:
sort_quick(mas[m+1:len(mas)])
return mas