In [56]:
def merge(a, p, q, r):
n1 = q - p + 1
n2 = r - q
L, R = [], []
for i in range(0, n1):
L.append(a[i + p])
for j in range(0, n2):
R.append(a[j + q + 1])
i, j = 0, 0
for k in range(p, r):
if i <= len(L) and (j >= len(R) or L[i] <= R[j]):
a[k] = L[i]
i += 1
else:
a[k] = R[j]
j += 1
In [47]:
import math
def mergeSort(a, p, r):
if p < r:
mid = math.floor((p + r)/2)
mergeSort(a, p, mid)
mergeSort(a, mid + 1, r)
merge(a, p, mid, r)
In [57]:
a = [3, 4, 1, 2]
mergeSort(a, 0, 3)
print(a)
In [37]:
a = [3, 4, 1, 2]
merge(a, 0, 1, 3)
print(a)
In [ ]: