Лучшее решение зависит от того, как вы определили лучших.
Даже для временной сложности все еще зависит от вашего размера ввода A и B. Предположим, что размер входного сигнала A равен m, а размер ввода B равен n.
Как отметил Сальвадор, сортировка B в O (nlogn) и слияние с A в O (m + n) является хорошим решением. Обратите внимание, что вы можете сортировать B в O (n), если вы примете некоторый алгоритм сортировки без сравнения, например, сортировку сортировки, сортировку по методу radix и т. Д.
Я предоставляю другое решение здесь: зациклируйте все элементы в B и выполните двоичный поиск в A, чтобы найти положение вставки, а затем вставить. Сложность времени - O (nlog (m + n)).
Редактировать 1: Как указывает @moreON, двоичный поиск и затем вставляемый подход предполагают, что вы перечисляете поддержку реализации, по крайней мере, амортизированную O (1) для вставки и произвольного доступа. Также установлено, что временная сложность должна быть O (nlog (m + n)) вместо O (nlogm), поскольку бинарный поиск занимает больше времени, когда добавляется больше элементов.
Сортировка двоичной вставки, по-видимому, не учитывает время, затраченное на вставку элемента, который, конечно, зависит от реализации «списка». Для списка, хранящегося в массиве размером n, вставка представляет собой среднее значение O (n) из-за необходимости скопировать все элементы после точки вставки. – moreON
@moreON, это правильно, +1 для приятного нахождения. – Chasefornone