Вы не фиксируете вывод merge_help, поэтому вы фактически не изменяете значения в списке 'a'.
Вы также пытаетесь сделать это на месте, что невозможно при слиянииsort.
В вашей функции слияния сделайте следующее:
def merge(a):
if(len(a) > 1):
# Divide the list in two
mid = len(a)//2
left_unsorted = a[:mid]
right_unsorted = a[mid:]
# Sort both halves
left_sorted = merge(left_unsorted)
right_sorted = merge(right_unsorted)
# Merge the two sorted lists
a_sorted = merge_help(left_sorted, right_sorted)
else:
a_sorted = a.copy()
return a_sorted
Примечание: это не сортирует переданный список;он возвращает только отсортированную версию.Поэтому, если вы вызовете его с помощью orig_list, orig_list в конце не изменится.