Я сделал что-то, что звучит так раньше.Вот 2 варианта.
Вариант 1: Просмотрите список, отсортировав каждую пару.Затем пройдитесь по списку, объединяя каждую пару пар.Затем каждая пара по 4 и так далее.Когда вы объединили весь список, все готово.
Вариант 2: есть стек отсортированных массивов.Каждый элемент сливается с нижним массивом, а затем каскадом, но сливается вниз, пока не останется только один, или второй сверху не станет больше верхнего.После того, как ваш последний элемент был добавлен, сверните массив, объединив его.
В случае, когда я использовал вариант 2, был случай, когда у меня было очень большое количество потоковых данных. Я сохранил первые несколько стековотсортированных массивов в памяти, а затем и более поздних, хранящихся на диске.Это приводит к хорошему месторасположению и эффективному использованию диска.(Вы спрашиваете, почему я не использовал готовое решение? Ну, набор данных, который я получал, был больше, чем диск, на котором я должен был его обрабатывать, там была настраиваемая логика слияния, и в действительности это был не тоттрудно писать.)