Unisci ordinamento
In questa sfida, implementerai la subroutine di unione dell'ordinamento di tipo merge. In particolare, è necessario creare una funzione o programma o verbo o simile che accetta due elenchi, ognuno ordinato in ordine crescente e li combina in un elenco ordinato in ordine crescente. Requisiti:
- L'algoritmo deve richiedere una quantità di tempo asintoticamente lineare nella dimensione dell'input. Per favore, smetti di dare O (n ^ 2) soluzioni.
- Non è possibile utilizzare alcuna funzione integrata in grado di ordinare un elenco, unire un elenco o qualcosa del genere. Discrezione dell'autore.
- Il codice dovrebbe essere in grado di gestire elementi ripetuti.
- Non preoccuparti per gli elenchi vuoti.
Esempi:
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]
Questo è code-golf , quindi può vincere il codice più corto!
b=a;b=b.length
potrebbe duplicare l'intero array a
(e dare come risultato O (n ^ 2) se eseguito per ogni elemento) o duplicare solo il riferimento all'array (O (n) time). Quale conta?