Sorting
Mergesort
def sortArray(self, nums: List[int]) -> List[int]:
def merge(a1, a2):
n, m = len(a1), len(a2)
i, j = 0, 0
res = []
while i < n or j < m:
if i == n:
res.append(a2[j])
j+=1
elif j == m:
res.append(a1[i])
i+=1
else:
if a1[i] < a2[j]:
res.append(a1[i])
i+=1
else:
res.append(a2[j])
j+=1
return res
def mergeSort(arr):
n = len(arr)
# Stop when len 1
if n <= 1:
return arr
m = n // 2
# Recursively sort left and right
a1 = mergeSort(arr[:m])
a2 = mergeSort(arr[m:])
# Two sides now sorted, lets merge
return merge(a1, a2)
return mergeSort(nums)Last updated