from typing import List


def merge_sort_in_place(the_list: List[int]) -> List[int]:
    """
    Performs a merge sort on a list in-place
    :param the_list: list of integer values to sort
    :return: same list orded in ascending order
    Examples:
    >>> merge_sort_in_place([0, 5, 3, 2, 2])
    [0, 2, 2, 3, 5]
    >>> merge_sort_in_place([])
    []
    >>> merge_sort_in_place([-2, -5, -45])
    [-45, -5, -2]
    """
    mid = len(the_list) // 2
    left_half = the_list[:mid]
    right_half = the_list[mid:]

    merge_sort_in_place(left_half)
    merge_sort_in_place(right_half)

    i = 0
    j = 0
    k = 0

    while i < len(left_half) and j < len(right_half):
        if left_half[i] < right_half[j]:
            the_list[k] = left_half[i]
            i += 1
        else:
            the_list[k] = right_half[j]
            j += 1
        k += 1

    # check if any element was left in the left_half
    while i < len(left_half):
        the_list[k] = left_half[i]
        i += 1
        k += 1

    # check if any element was left in the right_half
    while i < len(right_half):
        the_list[k] = right_half[j]
        j += 1
        k += 1

    return the_list