Сортировка слиянием
В этой задаче вы реализуете функцию слияния сортировки слиянием. В частности, вы должны создать функцию или программу или глагол или аналог, который берет два списка, каждый из которых отсортирован в порядке возрастания, и объединяет их в один список, отсортированный в порядке возрастания. Требования:
- Ваш алгоритм должен занимать асимптотически линейное количество времени в размере ввода. Пожалуйста, прекратите давать O (n ^ 2) решения.
- Вы не можете использовать какие-либо встроенные функции, способные сортировать список, объединять список или что-то в этом роде. Авторское усмотрение.
- Код должен быть в состоянии обрабатывать повторяющиеся элементы.
- Не беспокойтесь о пустых списках.
Примеры:
merge([1],[0,2,3,4])
[0,1,2,3,4]
merge([1,5,10,17,19],[2,5,9,11,13,20])
[1, 2, 5, 5, 9, 10, 11, 13, 17, 19, 20]
Это код-гольф , поэтому победит самый короткий код!
b=a;b=b.length
может дублировать весь массив a
(и привести к O (n ^ 2) времени, если выполняется для каждого элемента) или дублировать только ссылку на массив (O (n) времени). Какой из них считается?