Следует отметить, что большинство библиотек используют некоторую вариацию сортировки слиянием снизу вверх (итеративную), и что большинство экземпляров сортировки слиянием сверху вниз (рекурсивная) предназначены для образовательных целей.
Типичная реализация topdown merge на самом деле не «разделяет» массив, а генерирует индексы, представляющие начало, середину и конец подмассива, и эффективно помещает эти индексы в стек при использовании рекурсии для вызова самого себя. Обратите внимание, что объединение не начинается до тех пор, пока не будут созданы два базовых случая размера подмассива == 1, затем выполняются объединение и разбиение, следуя цепочке вызовов вверх и вниз, сначала глубина, а затем слева сначала.
Для сравнениясортировка слиянием снизу вверх не использует никаких рекурсивных шагов и вместо этого начинает обрабатывать массив из n элементов как n подмассивов размера 1 и немедленно начинает слияние четных и нечетных подмассивов.
Затраты на сортировку слиянием сверху вниз не так уж и велики, поскольку рекурсия имеет временную сложность O (log (n)), тогда как сортировка слиянием сверху вниз и снизу вверх имеет временную сложность O (n log (n)). На этапах слияния, в конце концов, подмассивы становятся достаточно большими, чтобы большую часть времени проводить в идентичной функции слияния как для сортировки сверху вниз, так и для восходящей сортировки.