Это , кажется, указывает на то, что это возможно сделать в O (lg ^ 2 n) пространстве. Я не понимаю, как доказать невозможность слияния в постоянном пространстве, но я также не вижу, как это сделать.
Edit:
В погоне за ссылками, Knuth Vol 3 - Упражнение 5.5.3 говорит: «Значительно более сложный алгоритм Л. Трабба-Пардо дает наилучший возможный ответ на эту проблему: возможно стабильное слияние за O (n) времени и стабильная сортировка O (n lg n) время, используя только O (lg n) бит вспомогательной памяти для фиксированного числа индексных переменных.
Больше ссылок , которые я не читал. Спасибо за интересную проблему.
Дальнейшее редактирование:
В этой статье утверждается, что в статье Хуанга и Лэнгстона есть алгоритм, который объединяет два списка размером m и n во времени O (m + n), поэтому ответ на ваш вопрос, похоже, будет положительным. К сожалению, у меня нет доступа к статье, поэтому я должен доверять информации из вторых рук. Я не уверен, как согласовать это с заявлением Кнута, что алгоритм Трабба-Пардо является оптимальным. Если бы от этого зависела моя жизнь, я бы пошел с Кнутом.
Теперь я вижу, что это было задано, как и ранее, переполнение стека вопрос число раз. У меня нет сердца, чтобы пометить его как дубликат.
Хуан Б.-С. и Langston M.A., Практическое объединение на месте, Comm. ACM 31 (1988) 348-352