(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))
    """
    size = len(arr)
    half = size/2
    # Our recursive base case
    if size <= 1:
        return arr
    # Perform merge_sort recursively on both halves
    left, right = merge_sort(arr[half:]), merge_sort(arr[:half])

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