(left, right)
return arr
Merge helper
        Complexity: O(n)
Merge helper
        Complexity: O(n)
Merge helper Complexity : O ( n )
def merge(left, right):
    """ Merge helper
        Complexity: O(n)
    """
    arr = []
    left_cursor, right_cursor = 0,0
    while left_cursor < len(left) and right_cursor < len(right):
        # Sort each one and place into the result
        if left[left_cursor] <= right[right_cursor]:
            arr.append(left[left_cursor])
            left_cursor+=1
        else:
            arr.append(right[right_cursor])
            right_cursor+=1
    # Add the left overs if there's any left to the result
    if left:
        arr.extend(left[left_cursor:])
    if right:
        arr.extend(right[right_cursor:])
    return arr
def merge ( left , right ) : arr = [ ] left_cursor , right_cursor = 0 , 0 while left_cursor < len ( left ) and right_cursor < len ( right ) : # Sort each one and place into the result if left [ left_cursor ] <= right [ right_cursor ] : arr . append ( left [ left_cursor ] ) left_cursor += 1 else : arr . append ( right [ right_cursor ] ) right_cursor += 1 # Add the left overs if there's any left to the result if left : arr . extend ( left [ left_cursor : ] ) if right : arr . extend ( right [ right_cursor : ] ) return arr