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:
| Pasada | Comparaciones | Resultado |
|---|---|---|
| 1 | 5-3, 5-8, 8-1 | [3, 5, 1, 8] |
| 2 | 3-5, 5-1 | [3, 1, 5, 8] |
| 3 | 3-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.
- Recorre toda la lista y localiza el valor mínimo.
- Lo intercambia con el elemento de la primera posición.
- 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
| Algoritmo | Mejor caso | Caso promedio | Peor caso | Estable |
|---|---|---|---|---|
| Burbuja (con bandera) | O(n) | O(n²) | O(n²) | Sí |
| Selección | O(n²) | O(n²) | O(n²) | No |
| Inserción | O(n) | O(n²) | O(n²) | Sí |
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.
| Elementos | Comparaciones aproximadas en O(n²) |
|---|---|
| 10 | 100 |
| 100 | 10 000 |
| 1 000 | 1 000 000 |
| 10 000 | 100 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
- Ejecútalos a mano primero, en papel, con una lista de cinco números. Anota el estado del arreglo después de cada paso.
- Escribe el pseudocódigo antes de programar. Si no puedes describirlo en palabras, todavía no lo entendiste.
- Implementa e imprime cada iteración para ver el arreglo transformarse.
- Cuenta comparaciones e intercambios con contadores y compara los resultados entre los tres algoritmos.
- 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.

















