Я делаю ооочень небольшие изменения, поэтому код остается вашим, благодаря вашим усилиям, вы были так близко, посмотрите:
Дело в том, что после просмотра кода вы должны передать две половинки слияниюметод, а также проверьте, если он пуст.Кроме того, значительно лучше возвращать результаты, а не вносить изменения на месте -
def merge(arr1, arr2):
for i in arr1:
for j in list(range(len(arr2))):
if i<arr2[j]:
arr2.append(arr2[-1])
for count in list(range(len(arr2)-1, j, -1)):
arr2[count] = arr2[count-1]
arr2[j] = i
break
if j == len(arr2)-1:
arr2.append(i)
return arr2
def mergeSort(arr):
if len(arr) !=1 and len(arr):
ary1 = mergeSort(arr[:len(arr)//2])
ary2 = mergeSort(arr[len(arr)//2:])
print(arr)
ary3 = merge(ary1,ary2)
print("After merging", ary3)
return ary3
else:
return arr
a = [9,5,12, 4, 6, 8,45, 2]
print(mergeSort(a))
, вывод
[9, 5]
After merging [5, 9]
[12, 4]
After merging [4, 12]
[9, 5, 12, 4]
After merging [4, 5, 9, 12]
[6, 8]
After merging [6, 8]
[45, 2]
After merging [2, 45]
[6, 8, 45, 2]
After merging [2, 6, 8, 45]
[9, 5, 12, 4, 6, 8, 45, 2]
After merging [2, 4, 5, 6, 8, 9, 12, 45]
[2, 4, 5, 6, 8, 9, 12, 45]