def merge_sort(a, left, right):
if left == right:
return [a[left]]
mid = left + (right-left) // 2
l1 = merge_sort(a, left, mid)
l2 = merge_sort(a, mid+1, right)
return merge_two_arr(l1, l2)
def merge_two_arr(l1, l2):
result = []
i = 0
j = 0
while i < len(l1) and j < len(l2):
if l1[i] < l2[j]:
result.append(l1[i])
l1.pop(0)
else:
result.append(l2[j])
l2.pop(0)
if l1:
result.extend(l1)
if l2:
result.extend(l2)
return result
a = [1, 23, 34, 4, 5, 6, 6]
result = merge_sort(a, 0, len(a)-1)
print(result)