def merge(array, start, mid, end):
    tmp = []

    p1, p2 = start, mid+1
    for i in range(len(end-start+1)):
        if p1 > mid:
            tmp.append(array[p2])
            p2 += 1
        elif p2 > end:
            tmp.append(array[p1])
            p1 += 1
        elif array[p1] < array[p2]:
            tmp.append(array[p1])
        else:
            tmp.append(array[p2])

    array[start:end+1] = copy.deepcopy(tmp)


def merge_sort(array, start, end):

    if start < end:
        mid = start + (end - start)/2
        merge(array, start, mid)
        merge(array, mid+1, end)

    merge(start, mid, end)

results matching ""

    No results matching ""