Об’єднати сортування
У цьому виклику ви реалізуєте підпрограму злиття сортування злиття. Зокрема, ви повинні створити функцію, програму або дієслово чи подібне, яке займає два списки, кожен сортований у порядку зростання, і об'єднує їх у один список, відсортований у порядку збільшення. Вимоги:
- Ваш алгоритм повинен забирати асимптотично лінійну кількість часу в розмірі вводу. Будь ласка, припиніть давати рішення 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) час). Який з них рахується?