Добрый день. Написал алгоритм сортировки слиянием(псевдокод взял в Кормене). Написал на си все работает, но на python почему-то нет. Думаю дело в рекурсивном вызове. Первый раз сталкиваюсь с ним в python. Помогите решить проблему.
def Merge(lst, p, q, r):
Left = []
Right = []
n1 = q - p + 1
n2 = r - q
for i in range(1, n1 + 1):
Left.append(lst[p + i - 1])
for j in range(1, n2 + 1):
Right.append(lst[q + j])
Left.append(32000)
Right.append(32000)
i = 1
j = 1
for k in range(p, r + 1):
if Left[i] <= Right[j]:
lst[k] = Left[i]
i += 1
else:
lst[k] = Right[j]
j += 1
def MergeSort(lst, p, r):
if p < r:
q = int((p + r) / 2)
MergeSort(lst, p, q)
MergeSort(lst, q + 1, r)
Merge(lst, p, q, r)
return lst
lst = [10, 9, 8, 7, 6]
lst = MergeSort(lst, 1, len(lst))
print(lst)