Ordenamiento de Burbuja: Algoritmo y Complejidad
Clase 8 de 16 • Curso de Complejidad Algorítmica con Python
Resumen
¿Qué es el ordenamiento de burbuja?
El ordenamiento de burbuja, conocido en inglés como "bubble sort", es uno de los algoritmos de ordenación más intuitivos. A pesar de su simplicidad, resulta ser una excelente introducción a los conceptos de ordenación debido a su fácil comprensión y visualización. Este algoritmo funciona recorriendo repetidamente una lista, comparando elementos adyacentes e intercambiándolos si están en el orden incorrecto.
¿Cómo funciona el ordenamiento de burbuja?
El proceso es repetitivo y bastante simple:
- Recorrido inicial: Se recorre toda la lista comparando cada par de elementos adyacentes.
- Intercambio de elementos: Si el elemento actual es mayor que el siguiente, se intercambian.
- Repetición: Este proceso se repite hasta que no se necesiten más intercambios, indicando que la lista está ordenada.
En cada pasada, el elemento más grande "burbujea" al final de la lista, lo que garantiza que después de cada iteración un elemento más está en su posición correcta.
¿Cuál es la complejidad algorítmica?
Una característica fundamental del ordenamiento de burbuja es que requiere múltiples pasadas sobre la lista. Esto conlleva a una complejidad algorítmica de (O(n^2)), donde (n) es el número de elementos en la lista. Esto ocurre porque, en el peor caso, se debe recorrer la lista completa n-1 veces, haciendo que el rendimiento del algoritmo sea cuadrático, lo cual no es eficiente para listas grandes.
Implementación del ordenamiento de burbuja en Python
Para comprender mejor este algoritmo, podemos revisar un ejemplo de implementación en Python. Aquí está el código para realizar el ordenamiento de burbuja:
def bubble_sort(lista):
n = len(lista)
for i in range(n):
for j in range(n-i-1):
if lista[j] > lista[j+1]:
lista[j], lista[j+1] = lista[j+1], lista[j]
return lista
# Ejemplo de uso
lista = [64, 34, 25, 12, 22, 11, 90]
print("Lista ordenada:", bubble_sort(lista))
Paso a paso del código
- Obtener la longitud: Primero se determina la longitud de la lista, lo cual es esencial para saber cuántas veces hay que recorrerla.
- Bucle exterior: Itera n veces a lo largo de la lista.
- Bucle interior: Realiza comparaciones e intercambios de elementos adyacentes, disminuyendo en cada iteración por los elementos ya ordenados.
- Intercambio: Utiliza Python's "swapping" para hacer más eficiente el intercambio de valores entre dos variables.
Conclusiones y consejos prácticos
A pesar de su simpleza, el ordenamiento de burbuja no es recomendable para grandes cantidades de datos debido a su ineficiencia con listas extensas. Para listas pequeñas, sin embargo, puede servir como una herramienta rápida y fácil de implementar. Además, proporciona una excelente base para entender conceptos más avanzados de algoritmos de ordenación y la importancia de la eficiencia algorítmica. En futuras exploraciones, considerar algoritmos más avanzados como "insertion sort" o "merge sort" será esencial para optimizar el ordenamiento de datos.