Zusammenführen, sortieren
In dieser Challenge implementieren Sie die Merge-Subroutine von merge sort. Insbesondere müssen Sie eine Funktion oder ein Programm, ein Verb oder Ähnliches erstellen, das zwei Listen verwendet, die in aufsteigender Reihenfolge sortiert sind, und diese in einer Liste zusammenfasst, die in aufsteigender Reihenfolge sortiert ist. Bedarf:
- Ihr Algorithmus muss eine asymptotisch lineare Zeit in der Größe der Eingabe benötigen. Bitte geben Sie keine O (n ^ 2) -Lösungen mehr an.
- Sie dürfen keine integrierten Funktionen verwenden, mit denen eine Liste sortiert oder zusammengeführt werden kann. Ermessen des Autors.
- Der Code sollte in der Lage sein, wiederholte Elemente zu verarbeiten.
- Mach dir keine Sorgen über leere Listen.
Beispiele:
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]
Das ist Code-Golf , also kann der kürzeste Code gewinnen!
b=a;b=b.length
könnte das gesamte Array duplizieren a
(und zu O (n ^ 2) -Zeit führen, wenn es für jedes Element ausgeführt wird) oder nur den Verweis auf das Array duplizieren (O (n) -Zeit). Welches zählt?