'''
Author: Dr. Justin Wyss-Gallifent -- University of Maryland
Source: https://www.math.umd.edu/~immortal/CMSC351/
'''
import random
def mergesort(A,indent):
print(indent * '_' + 'Mergesort:' + str(A))
if len(A) > 1:
m = len(A) // 2
L = A[:m]
R = A[m:]
mergesort(L,indent+2)
mergesort(R,indent+2)
i = 0
j = 0
k = 0
while i < len(L) and j < len(R):
if L[i] < R[j]:
A[k] = L[i]
i += 1
else:
A[k] = R[j]
j += 1
k += 1
while i < len(L):
A[k] = L[i]
i += 1
k += 1
while j < len(R):
A[k] = R[j]
j += 1
k += 1
print(indent * '_' + 'Merge:' + str(L) + ' and ' + str(R))
print(indent * '_' + 'Result: ' + str(A))
A = []
for i in range(0,11):
A.append(random.randint(0,100))
print(A)
mergesort(A,0)
print(A)