Nivel inicial6 min de lectura · Publicado el

Algoritmos de ordenación: vídeo, comparativa y quicksort

Algoritmos de ordenación con una baraja: inserción mete el 4 entre el 2 y el 7; merge sort mezcla dos montones ordenados en 1, 2, 2, 4, 7, 9. Inserción o merge sortrubentejera.com 2794una a una:inserción279124122479en montones:merge sort
Inserción coloca cada carta en su sitio, una a una, como en la mano. Merge sort ordena montones por separado y los mezcla: 2, 7, 9 y 1, 2, 4 dan 1, 2, 2, 4, 7, 9.

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

  1. Míralo una vez entero, sin pausa, para hacerte una idea de qué algoritmos terminan antes.
  2. 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.
  3. Compara el tramo aleatorio con el inverso: hay algoritmos que no cambian y otros que empeoran mucho.
  4. Con la tabla de abajo, comprueba si lo que has visto encaja con el coste de cada uno.
  5. 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

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() y list.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.