import numpy as np
import math
A = np.array([8, 9, 120, 1, 4, 16, 14])
def merge(A, p, q, r):
n1 = q-p+1
n2 = r-q
L = np.arange(n1+1)
for i in range(0, n1):
L[i] = A[p+i-1]
R = np.arange(n2+1)
for j in range(0, n2):
R[j] = A[q+j]
L[n1] = 10000
R[n2] = 10000
i = 0
j = 0
for k in range(p-1, r):
if L[i] <= R[j]:
A[k] = L[i]
i = i + 1
else:
A[k] = R[j]
j = j+1
def merge_sort(A, p, r):
if p < r:
q = math.floor((p+r)/2)
merge_sort(A, p, q)
merge_sort(A, q+1, r)
merge(A, p, q, r)
print(A)
merge_sort(A, 1, len(A))
print(A)