HERRAMIENTA · CIENCIA DE LA COMPUTACIÓN

Algoritmos de ordenamiento

Elige un algoritmo y míralo ordenar barras paso a paso, contando comparaciones e intercambios. La diferencia entre O(n²) y O(n log n) se ve a simple vista.

Cargando herramienta…

Por qué importa el algoritmo

Ordenar datos es una de las operaciones más frecuentes en programación: buscar más rápido, eliminar duplicados o mostrar resultados. Con 10 elementos cualquier método sirve, pero con un millón la diferencia es enorme: un algoritmo O(n²) hace del orden de 10¹² comparaciones, mientras que uno O(n log n) hace unos 2 × 10⁷.

Comparación

AlgoritmoPromedioPeor casoMemoria extraEstable
BurbujaO(n²)O(n²)O(1)Sí
InserciónO(n²)O(n²)O(1)Sí
SelecciónO(n²)O(n²)O(1)No
Merge sortO(n log n)O(n log n)O(n)Sí
QuicksortO(n log n)O(n²)O(log n)No

“Estable” significa que los elementos iguales conservan su orden original, algo importante al ordenar por varias columnas.

Ejemplo: cuántas comparaciones

Burbuja sobre 32 elementos desordenados hace como máximo 32 × 31 / 2 = 496 comparaciones. Merge sort sobre los mismos datos hace a lo sumo unas n·log₂n ≈ 32 × 5 = 160. Ordena con ambos en la herramienta y compara los contadores. Prueba también inserción con datos casi ordenados: es casi lineal, por eso se usa dentro de algoritmos híbridos como Timsort, el de Python.

Errores comunes

  • Elegir quicksort con el último elemento como pivote para datos ya ordenados: cae en su peor caso O(n²).
  • Pensar que el algoritmo con menos comparaciones siempre es el más rápido: también influyen los accesos a memoria.
  • Reinventar el ordenamiento: los lenguajes ya traen funciones optimizadas (sorted en Python, Array.prototype.sort en JavaScript).

Preguntas frecuentes

¿Qué significa O(n log n)?

Que el trabajo crece un poco más rápido que lineal: duplicar los datos algo más que duplica el tiempo, mientras que en O(n²) lo cuadruplica.

¿Cuál es el mejor algoritmo?

Depende de los datos y la memoria disponible; en la práctica se usan híbridos como Timsort o introsort.

¿Dónde lo programo?

En el Code Lab hay un ejemplo de burbuja en Python y JavaScript.

Herramienta educativa. Los resultados se calculan en tu navegador; ningún dato se envía a un servidor.