Algoritmos de ordenación: vídeo, comparativa y quicksort
Los algoritmos de ordenación (también llamados algoritmos de ordenamiento) toman una lista desordenada y la devuelven en orden. Ordenar una lista es como ordenar una baraja de cartas: puedes ir colocando cada carta en su sitio, una a una, o dividir la baraja en montones, ordenar cada montón y juntarlos. Cada forma es un algoritmo distinto, y con miles de cartas la diferencia se nota mucho.
El vídeo: qué es y quién lo hizo
«Visualization and Comparison of Sorting Algorithms» es un vídeo de Viktor Bohush, publicado en YouTube en abril de 2014 y con más de un millón de visualizaciones. Es una animación: su descripción solo menciona una pista de música de fondo («Drop It», de Silent Partner), no una narración.
Según su descripción, compara estos 9 algoritmos: selección, Shell sort, inserción, merge sort, quicksort, heapsort, burbuja, comb sort y cocktail sort. Y los pone a prueba con cuatro tipos de datos, cada uno en su tramo del vídeo:
| Minuto | Datos de entrada |
|---|---|
| 0:01 | Aleatorios |
| 1:07 | Con pocos valores distintos |
| 2:08 | En orden inverso |
| 3:38 | Casi ordenados |
El código de la animación es público: está en GitHub, escrito en Java y con licencia MIT. El último cambio es de 2019.
Cómo sacarle partido
- Míralo una vez entero, sin pausa, para hacerte una idea de qué algoritmos terminan antes.
- Vuelve al tramo de datos casi ordenados (3:38) y fíjate en inserción: es un caso en el que un algoritmo «lento» puede quedar muy bien.
- Compara el tramo aleatorio con el inverso: hay algoritmos que no cambian y otros que empeoran mucho.
- Con la tabla de abajo, comprueba si lo que has visto encaja con el coste de cada uno.
- Programa uno, con tests, y compáralo con la ordenación de tu lenguaje.
Tipos de algoritmos de ordenación y su coste
La notación O grande indica cómo crece el tiempo cuando crece la lista de n elementos. n² significa que si la lista se multiplica por 10, el tiempo se multiplica por unas 100.
| Algoritmo | Idea | Caso medio | Peor caso |
|---|---|---|---|
| Burbuja | Intercambia vecinos desordenados hasta que no queda ninguno | O(n²) | O(n²) |
| Cocktail sort | Una burbuja que recorre la lista en los dos sentidos | O(n²) | O(n²) |
| Comb sort | Una burbuja que compara elementos lejanos y va acortando la distancia | Mejor que burbuja | O(n²) |
| Inserción | Coloca cada elemento en su sitio, como las cartas en la mano | O(n²) | O(n²) |
| Selección | Busca el menor y lo pone delante, una y otra vez | O(n²) | O(n²) |
| Shell sort | Una inserción por saltos, que se van reduciendo | Depende de los saltos | Depende de los saltos |
| Merge sort | Divide en mitades, ordena cada una y las mezcla | O(n log n) | O(n log n) |
| Quicksort | Elige un pivote y separa menores y mayores | O(n log n) | O(n²) |
| Heapsort | Usa un montículo para sacar siempre el mayor | O(n log n) | O(n log n) |
Con una lista ya casi ordenada, inserción hace muy poco trabajo: en el mejor caso, una sola pasada, O(n). Por eso conviene mirar ese tramo del vídeo.
Quicksort en Python
El original enlazaba a la explicación de quicksort de GeeksforGeeks. Esta es una versión corta para entender la idea:
def quicksort(numeros):
if len(numeros) <= 1:
return numeros # una lista de 0 o 1 elementos ya está ordenada
pivote, *resto = numeros # el primero hace de pivote
menores = [n for n in resto if n < pivote]
mayores = [n for n in resto if n >= pivote]
return quicksort(menores) + [pivote] + quicksort(mayores)
print(quicksort([7, 2, 9, 4, 2, 1])) # [1, 2, 2, 4, 7, 9]
Es fácil de leer, pero crea listas nuevas en cada paso y, con una lista ya ordenada, cae en su peor caso: el pivote es siempre el menor y cada paso solo quita un elemento. Las versiones de verdad ordenan en el sitio y eligen mejor el pivote.
Aprende cómo ordenan; en producción, usa el sort de tu lenguaje.
En tu día a día
Python ya trae sorted() y list.sort(), probadas y optimizadas. Además, son estables: si dos elementos son iguales, conservan el orden en que estaban.
print(sorted([7, 2, 9, 4, 2, 1])) # [1, 2, 2, 4, 7, 9]
Implementar un algoritmo de ordenación sí es un buen ejercicio para practicar TDD: empieza por la lista vacía, sigue con un elemento y ve añadiendo casos. Tienes los pasos en Pasos para aplicar TDD y más ejercicios en Katas para pruebas.
Para quién es
- Encaja si estás empezando con algoritmos, preparas una asignatura o una entrevista técnica, o necesitas explicar a alguien por qué no todos los algoritmos tardan lo mismo.
- No basta si necesitas entender el código paso a paso: el vídeo enseña el comportamiento, no la implementación. Para eso, completa con las alternativas de abajo.
Alternativas
- Data Structure Visualizations, de David Galles (Universidad de San Francisco): ejecutas tú cada algoritmo, paso a paso, sobre una lista.
- Sort Visualizer: animaciones de más de 15 algoritmos de ordenación.
- Quick Sort, GeeksforGeeks: la explicación que enlazaba el original, con código en varios lenguajes.
Fuentes
Consultado el 7 de noviembre de 2026:
- Vídeo: «Visualization and Comparison of Sorting Algorithms», Viktor Bohush. Título, autor, duración (266 segundos), fecha de publicación (24 de abril de 2014), visualizaciones y descripción (lista de algoritmos y minutos de cada tramo) tomados de su página de YouTube.
- Código del vídeo: vbohush/SortingAlgorithmAnimations (Java, licencia MIT, último cambio en marzo de 2019).
- Quick Sort, GeeksforGeeks (la ruta original redirige aquí).
- Documentación de Python, Sorting Techniques: estabilidad de
sorted()ylist.sort(). - Los ejemplos se han ejecutado con Python 3.14.4; los comentarios muestran su salida real, y el quicksort se ha comparado con
sorted()sobre 1000 listas aleatorias.