Ordenar fusión
En este desafío, implementará la subrutina de fusión del tipo de fusión. Específicamente, debe crear una función o programa o verbo o similar que tome dos listas, cada una ordenada en orden creciente, y las combine en una lista ordenada en orden creciente. Requisitos:
- Su algoritmo debe tomar una cantidad de tiempo asintóticamente lineal en el tamaño de la entrada. Por favor, deje de dar soluciones O (n ^ 2).
- No puede usar ninguna función incorporada capaz de ordenar una lista, o fusionar una lista, o algo así. Discreción del autor.
- El código debe poder manejar elementos repetidos.
- No te preocupes por las listas vacías.
Ejemplos:
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]
Este es el código de golf , ¡así que gane el código más corto!
b=a;b=b.length
podría duplicar toda la matriz a
(y dar como resultado un tiempo O (n ^ 2) si se ejecuta para cada elemento) o duplicar solo la referencia a la matriz (tiempo O (n)). ¿Cuál cuenta?