Сортировка слиянием. Сложность алгоритма

Гоша: Классный алгоритм! Значит, он работает за O(nlog⁡n)O(n \log n)O(nlogn) даже в худшем случае?
Тимофей: Да, разберёмся почему.
image
На каждом шаге разбиваем массив на две примерно равные по размеру части.
Разбиение продолжается до тех пор, пока длина массива не станет равной 1.
Всего потребуется log⁡2n \log_2 nlog2​n разбиений.
На каждом шаге нужно выполнить операцию слияния двух отсортированных массивов.
Для этого потребуется O(n)O(n)O(n) операций, ведь на каждом уровне рекурсии нужно обработать nnn чисел.
Таким образом, общая сложность O(nlog⁡n)O(n \log n)O(nlogn).
Гоша: Классно! Кажется, мы нашли самое быстрое решение для обеих задач Кондратия. С помощью этого алгоритма мы сможем упорядочить города в соответствии со значением «треш-индекса» и оптимизировать алгоритм выявления нарушителей.
Тимофей: Ну, не скажу, что это решение самое быстрое. К тому же, алгоритму требуется O(n)O(n)O(n) дополнительной памяти.
Гоша: Разве можно отсортировать данные быстрее?
Тимофей: Скоро узнаешь!
Решите задачи H и I: https://contest.yandex.ru/contest/18899/problems/