Mezclar dos listas ordenadas en Python
La mitad de mezcla del merge sort — dos punteros sobre entradas ordenadas.
def fusionar_ordenadas(izquierda, derecha):
salida, i, j = [], 0, 0
while i < len(izquierda) and j < len(derecha):
if izquierda[i] <= derecha[j]:
salida.append(izquierda[i])
i += 1
else:
salida.append(derecha[j])
j += 1
return salida + izquierda[i:] + derecha[j:]
Cómo funciona
- Recorre dos listas ordenadas con los índices
iyj. - Siempre agrega a la salida la cabeza más pequeña.
- Al agotarse una lista, añade lo que quede de la otra.
Palabras clave y builtins usados aquí
defelseiflenreturnwhile
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 263
- Tokens
- 89
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 56 segundos.
Paso 9 de 10 en Colecciones; paso 31 de 72 en Fundamentos del lenguaje.