#Merge sort
arr = [5, 3, 8, 4, 2, 7, 1, 6]
def msort(arr):
n = len(arr)
if n <=1:
return arr
mid = n // 2
left = msort(arr[0:mid])
right = msort(arr[mid:n])
return merge(left, right)
def merge(left, right):
result = []
i = 0
j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i = i + 1
else:
result.append(right[j])
j = j + 1
break
result.extend(left[i:])
result.extend(right[j:])
return result
print(msort(arr))