La elección de un algoritmo de ordenamiento depende de algunas propiedades clave: complejidad de tiempo, estabilidad, uso de memoria in-place y la naturaleza de los datos. No hay un solo algoritmo que gane en todas partes.
La elección de un algoritmo de ordenamiento depende de algunas propiedades clave: complejidad de tiempo, estabilidad, uso de memoria in-place y la naturaleza de los datos. No hay un solo algoritmo que gane en todas partes.
| Algoritmo | Promedio | Peor caso | Estable | In-place |
|---|---|---|---|---|
| Insertion | O(n²) | O(n²) | Sí | Sí |
| Merge | O(n log n) | O(n log n) | Sí | No |
| Quick | O(n log n) | O(n²) | No | Sí |
| Heap | O(n log n) | O(n log n) | No | Sí |
# Most languages ship a tuned hybrid; prefer it in production
sorted(data, key=lambda x: x.priority) # stable Timsort in Python
No implementes tu propio algoritmo de ordenamiento a menos que tengas una razón específica — los ordenamientos de biblioteca (Timsort, introsort) son híbridos probados en batalla.
Hacer coincidir el algoritmo de ordenamiento con los datos y requisitos evita tanto pérdida de tiempo como errores sutiles (como perder estabilidad).
Comprender los compensaciones explica por qué las bibliotecas estándar eligieron híbridos como Timsort e introsort.
Este juicio comparativo — no memorizar un algoritmo — es lo que la ingeniería real y las entrevistas recompensan.