(arr)
return merge(left, right)
Merge Sort
        Complexity: O(n log(n))
Merge Sort
        Complexity: O(n log(n))
Merge Sort Complexity : O ( n log ( n ))
def merge_sort(arr):
    """ Merge Sort
        Complexity: O(n log(n))
    """
    # Our recursive base case
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    # Perform merge_sort recursively on both halves
    left, right = merge_sort(arr[mid:]), merge_sort(arr[:mid])

    # Merge each side together
    return merge(left, right)
def merge_sort ( arr ) : # Our recursive base case if len ( arr ) <= 1 : return arr mid = len ( arr ) // 2 # Perform merge_sort recursively on both halves left , right = merge_sort ( arr [ mid : ] ) , merge_sort ( arr [ : mid ] ) # Merge each side together return merge ( left , right )