a = [6, 3, 8, 5, 2, 7, 4, 1]
#Divide COnquer and Merge
def merge_sort(a):
if len(a) <=1:
return a
n = len(a)
#Find middle index
mid = len(a)//2
#Divide and Conquer using Recursivley
left_half = merge_sort(a[0:mid])
right_half = merge_sort(a[mid:n])
return merge(left_half, right_half)
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
result.extend(left[i:])
result.extend(right[j:])
return result
mergesort = merge_sort(a)
print(mergesort)