def merge_sort(alist):
## print("The list entering the function is ",alist)
if (len(alist)>1):
mid=len(alist)//2
left_list=alist[0:mid]
right_list=alist[mid:]
merge_sort(left_list)
merge_sort(right_list)
## print("alist is ",alist)
i=0
j=0
k=0
while i < len(left_list) and j < len(right_list):
if left_list[i]<right_list[j]:
alist[k]=left_list[i]
i+=1
else:
alist[k]=right_list[j]
j+=1
k+=1
while i < len(left_list):
alist[k]=left_list[i]
i+=1
k+=1
while j< len(right_list):
alist[k]=right_list[j]
j+=1
k+=1
#return(alist)
unsortedlist=[56,2,3,91,45,34,56,2,4,7,8,1,3]
merge_sort(unsortedlist)
print(unsortedlist)
The output is [1, 2, 2, 3, 3, 4, 7, 8, 34, 45, 56, 56, 91]
Why the unsortedlist list changed even though nothing was returned ?