Синтаксис Python для подмассива - это массив [начало, конец], где диапазон индекса находится в диапазоне от начала до конца-1 включительно (он не включает конец). Условия завершения для индексов должны быть <не <=, например i <mid, вместо i <= mid. </p>
Имена merge1 и mergesort меняются местами. mergesort () на самом деле является функцией слияния, а merge1 на самом деле является рекурсивной функцией слияния сверху вниз. Имена должны поменяться местами.
Функция сортировки слиянием должна создавать только стек вызовов, включающий массив и диапазон индекса. left и right должны быть созданы из массива «a» в функции слияния, а затем объединены обратно в «a» во время процесса слияния.
Первоначальный вызов функции сортировки слиянием должен иметь параметры (a, 0, len (a))
Пример кода
def mergesort(a,beg,end):
if (end-beg) > 1:
mid=(beg+end)//2
mergesort(a,beg,mid)
mergesort(a,mid,end)
merge(a,beg,mid,end)
def merge(a,beg,mid,end):
left = a[beg:mid]
right = a[mid:end]
i = 0
j = 0
k = beg
while True:
if left[i] <= right[j]:
a[k] = left[i]
i += 1
k += 1
if(i < len(left)):
continue
a[k:end] = right[j:len(right)]
break
else:
a[k] = right[j]
j += 1
k += 1
if(j < len(right)):
continue
a[k:end] = left[i:len(left)]
break
a=[9,1,45,99,98,56]
mergesort(a,0,len(a))
print(a)