SortingMerge Sort

Merge Sort

Stable sort.

Implementation

def merge_sort(nums):
    if not nums:
        return
 
    mid = len(nums)//2
    L = nums[:mid]
    R = nums[mid:]
 
    merge_sort(L)
    merge_sort(R)
 
    i = j = k = 0
    len_L = len(L)
    len_R = len(R)
    while i < len_L and j < len_R:
        if L[i] < R[j]:
            nums[k] = L[i]
            i += 1
        else:
            nums[k] = R[j]
            j += 1
        k += 1
 
    while i < len_L:
        nums[k] = L[i]
        i += 1
        k += 1
 
    while j < len_R:
        nums[k] = R[j]
        j += 1
		k += 1
	

Optimizations

Optimized Complexity

Related