В коде есть две ошибки:
Во-первых, у вас есть опечатка в строке 14:
def mergesort(array):
#....
arr=merge(left,right)
return (arr) # Not return (array)
Во-вторых, ваш код не работает со специальными входами, поскольку вы не реализовали случай <=
или >=
при выполнении операции слияния. Так, например, ваш код не может сортировать 2 5 3 5
. Чтобы это исправить:
def merge(left,right):
# ...
elif(left[i] > right[j]):
arr.append(right[j])
j=j+1
elif (left[i] <= right[j]): # instead of <
arr.append(left[i])
i=i+1