Algoritmos de Ordenamiento: Burbuja, Selección e Inserción Explicados

Descubre cómo funcionan los algoritmos de ordenamiento burbuja, selección e inserción, en qué se diferencian y por qué se siguen enseñando.

Compartir en Linkedin Compartir en WhatsApp

Tiempo estimado de lectura: 7 minutos

Imagen del artículo Algoritmos de Ordenamiento: Burbuja, Selección e Inserción Explicados

Ordenar una lista parece un problema trivial hasta que hay que explicarle a una computadora cómo hacerlo. Ahí aparece la pregunta interesante: ¿cuál es exactamente el procedimiento? Los algoritmos de ordenamiento son la respuesta clásica a esa pregunta y, para quien está aprendiendo lógica de programación, son el mejor terreno de práctica que existe: combinan bucles, condicionales, arreglos e intercambio de variables en problemas cortos y verificables.

Por qué se estudian si los lenguajes ya traen una función de ordenar

Es cierto: en producción casi nunca escribirás tu propio algoritmo de ordenamiento. Las bibliotecas estándar traen implementaciones muy optimizadas. Aun así, estudiarlos tiene sentido por tres razones:

  • Enseñan a razonar sobre eficiencia, no solo sobre si el código “funciona”.
  • Son la introducción natural a la notación Big O y al análisis de costos.
  • Aparecen constantemente en entrevistas técnicas y en evaluaciones académicas.

Ordenamiento burbuja (bubble sort)

Es el más simple de entender. Recorre la lista comparando pares de elementos vecinos y los intercambia si están en el orden equivocado. Con cada pasada, el mayor elemento “burbujea” hasta el final.

Con la lista [5, 3, 8, 1] el proceso sería:

PasadaComparacionesResultado
15-3, 5-8, 8-1[3, 5, 1, 8]
23-5, 5-1[3, 1, 5, 8]
33-1[1, 3, 5, 8]

Una mejora habitual consiste en marcar con una bandera si hubo algún intercambio en la pasada. Si no hubo ninguno, la lista ya está ordenada y el bucle puede terminar antes.

Ordenamiento por selección (selection sort)

La idea es distinta: en cada vuelta busca el elemento más pequeño de la parte no ordenada y lo coloca en su posición definitiva.

  1. Recorre toda la lista y localiza el valor mínimo.
  2. Lo intercambia con el elemento de la primera posición.
  3. Repite el proceso ignorando la primera posición, luego las dos primeras, y así sucesivamente.

Su ventaja práctica es que realiza pocos intercambios: como máximo uno por vuelta. Eso lo hace preferible cuando escribir en memoria es una operación costosa.

Ordenamiento por inserción (insertion sort)

Funciona igual que ordenar cartas en la mano: tomas una carta nueva y la insertas en el lugar que le corresponde entre las que ya tienes ordenadas.

El algoritmo recorre la lista desde el segundo elemento, y por cada uno lo desplaza hacia la izquierda mientras encuentre elementos mayores que él. Cuando encuentra su lugar, se detiene.

Tiene una propiedad muy valiosa: es extremadamente rápido cuando la lista ya está casi ordenada. En ese caso se acerca a un recorrido lineal, porque casi no hay desplazamientos.

Comparación de los tres

AlgoritmoMejor casoCaso promedioPeor casoEstable
Burbuja (con bandera)O(n)O(n²)O(n²)
SelecciónO(n²)O(n²)O(n²)No
InserciónO(n)O(n²)O(n²)

Un algoritmo es estable cuando mantiene el orden relativo de los elementos que tienen la misma clave. Importa cuando ordenas por varios criterios sucesivos: si primero ordenas por nombre y luego por departamento, un algoritmo estable conserva el orden alfabético dentro de cada departamento.

Qué significa O(n²) en la práctica

La notación describe cómo crece el trabajo a medida que crece la entrada. Si un algoritmo es cuadrático, duplicar la cantidad de datos multiplica por cuatro el tiempo aproximado.

ElementosComparaciones aproximadas en O(n²)
10100
10010 000
1 0001 000 000
10 000100 000 000

Por eso, para volúmenes grandes de datos se usan algoritmos con comportamiento O(n log n), como merge sort o quicksort, que dividen el problema en partes más pequeñas en lugar de comparar todo contra todo.

Cuándo conviene cada uno

  • Burbuja: prácticamente solo con fines didácticos. Es fácil de explicar y de visualizar.
  • Selección: cuando el costo de escribir en memoria es alto y conviene minimizar intercambios.
  • Inserción: con listas pequeñas o casi ordenadas. De hecho, muchas implementaciones profesionales lo usan internamente para los subconjuntos pequeños.
  • Algoritmos O(n log n): para todo lo demás, y especialmente para volúmenes grandes.

Para qué sirve tener los datos ordenados

Ordenar no es un fin en sí mismo: es una operación previa que habilita otras mucho más eficientes. Este es el motivo real por el que el tema ocupa tanto espacio en cualquier curso de programación.

  • Búsqueda binaria. Sobre una lista ordenada se puede descartar la mitad de los datos en cada paso, lo que reduce el costo de búsqueda de lineal a logarítmico. Sobre una lista desordenada, esa técnica simplemente no funciona.
  • Detección de duplicados. Si los elementos iguales quedan juntos, basta comparar cada uno con su vecino en un solo recorrido.
  • Cálculo de estadísticas. La mediana, los percentiles y los valores extremos se obtienen de inmediato cuando los datos están ordenados.
  • Presentación al usuario. Listados, rankings y reportes casi siempre exigen un criterio de orden explícito.
  • Combinación de conjuntos. Fusionar dos listas ordenadas es un recorrido simple; hacerlo con listas desordenadas obliga a comparar todo contra todo.

Visto así, el costo de ordenar se amortiza: se paga una vez y se aprovecha en muchas operaciones posteriores.

Cómo practicarlos bien

  1. Ejecútalos a mano primero, en papel, con una lista de cinco números. Anota el estado del arreglo después de cada paso.
  2. Escribe el pseudocódigo antes de programar. Si no puedes describirlo en palabras, todavía no lo entendiste.
  3. Implementa e imprime cada iteración para ver el arreglo transformarse.
  4. Cuenta comparaciones e intercambios con contadores y compara los resultados entre los tres algoritmos.
  5. Prueba casos límite: lista vacía, un solo elemento, lista ya ordenada y lista en orden inverso.

Conclusión

Burbuja, selección e inserción resuelven el mismo problema con estrategias distintas, y esa diferencia es justamente la lección: en programación casi nunca hay una única solución correcta, sino soluciones con costos diferentes. Entender por qué un algoritmo cuadrático se vuelve inviable con miles de elementos es el primer paso hacia decisiones técnicas fundamentadas.

Si quieres seguir construyendo esa base, en Cursa encontrarás cursos gratuitos de lógica de programación y de lenguajes como Python y Java, donde estos algoritmos se implementan paso a paso junto con estructuras de datos fundamentales.

Qué Es un Motor de Videojuegos y Cómo Funciona el Bucle de Juego

Descubre qué hace un motor de videojuegos, cómo funciona el bucle de juego y qué papel cumplen el renderizado, la física y el delta time.

Claves Primarias y Foráneas: Cómo se Relacionan las Tablas en una Base de Datos

Aprende qué son las claves primarias y foráneas, cómo conectan tablas, qué tipos de relaciones existen y por qué protegen la integridad de tus datos.

Qué Es el DNS: Cómo tu Navegador Encuentra un Sitio Web en Milisegundos

Entiende cómo funciona el sistema de nombres de dominio, qué son los registros A, CNAME y MX, y por qué a veces los cambios tardan.

Cifrado de Extremo a Extremo: Cómo Funciona y Qué Protege Realmente

Explicación sencilla del cifrado de extremo a extremo: claves pública y privada, qué protege, qué no protege y por qué importa.

Memoria RAM y almacenamiento: por qué no son lo mismo

Diferencias entre RAM y disco, qué hace cada uno, qué pasa cuando falta memoria y cuál conviene ampliar primero.

Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Descubre qué es el DOM, cómo el navegador convierte el HTML en un árbol de nodos y cómo JavaScript lo modifica en tiempo real.

La Regla 3-2-1 de las Copias de Seguridad: Cómo Proteger tus Archivos de Verdad

Descubre en qué consiste la regla 3-2-1 de respaldo, los tipos de copia que existen y los errores más comunes al proteger la información.

Diagramas de flujo y pseudocódigo: cómo planificar un programa antes de escribirlo

Aprende a usar diagramas de flujo y pseudocódigo para diseñar algoritmos claros antes de escribir una sola línea de código.