Scal sortowanie
W tym wyzwaniu zaimplementujesz podprogram scalania sortowania scalającego. W szczególności musisz utworzyć funkcję, program, czasownik lub podobny, który pobierze dwie listy, każdą posortowaną w porządku rosnącym, i połączy je w jedną listę posortowaną w kolejności rosnącej. Wymagania:
- Twój algorytm musi zająć asymptotycznie liniowy czas w wielkości danych wejściowych. Przestańcie podawać rozwiązania O (n ^ 2).
- Nie możesz używać żadnych wbudowanych funkcji zdolnych do sortowania listy, scalania listy lub czegokolwiek podobnego. Według uznania autora.
- Kod powinien być w stanie obsłużyć powtarzające się elementy.
- Nie martw się o puste listy.
Przykłady:
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]
To jest kod-golf , więc może wygrać najkrótszy kod!
b=a;b=b.length
może powielić całą tablicę a
(i dać czas O (n ^ 2), jeśli zostanie wykonany dla każdego elementu) lub powielić tylko odniesienie do czasu tablicy (O (n)). Który się liczy?