Задача «Сортировка слиянием»

Реализовать сортировку слиянием.

def merge_sort(arr):
    ...

Функция выделяет ровно один раз ровно один дополнительный массив (размером len(arr)) и использует его в качестве вспомогательного.

Работу алгоритма протестировать с помощью assert. Особое внимание уделить краевым случаям: len=0, len=1. Дополнительно реализовать тест генерации случайных массивов случайного размера с сортировкой и последующей проверкой.