logo

Ordenación de burbujas en Python

Bubble Sort es un algoritmo de clasificación simple que recorre repetidamente la lista, compara elementos adyacentes y los intercambia si están en el orden incorrecto. Se denomina 'Clasificación de burbujas' porque los elementos más pequeños 'burbujas' llegan a la parte superior de la lista. Si bien no es el algoritmo de clasificación más eficiente, es fácil de entender e implementar, lo que lo convierte en un buen punto de partida para aprender sobre algoritmos de clasificación. En este artículo, profundizaremos en el concepto de Bubble Sort, proporcionaremos una implementación de Python con resultados y discutiremos la complejidad temporal del algoritmo.

Comprender la clasificación de burbujas

La idea básica detrás de Bubble Sort es recorrer la lista varias veces, comparando elementos adyacentes e intercambiándolos si están desordenados. El proceso continúa hasta que no se necesitan más intercambios, lo que indica que la lista ya está ordenada. El algoritmo recibe su nombre de la forma en que los elementos más pequeños se mueven gradualmente hacia la parte superior de la lista, como si fueran burbujas que suben a la superficie.

Analicemos los pasos del algoritmo Bubble Sort:

  1. Iterar a través de la lista: comience desde el principio de la lista y compare cada par de elementos adyacentes.
  2. Comparar e intercambiar: si los elementos están en el orden incorrecto, cámbielos. Esto asegura que el elemento más grande 'suba' y el más pequeño se mueva hacia abajo.
  3. Continuar iterando: repita el proceso para cada par de elementos adyacentes hasta llegar al final de la lista.
  4. Repita hasta que se ordene: siga repitiendo la lista hasta que no se necesiten más intercambios. En este punto, la lista está ordenada.

Si bien Bubble Sort es sencillo de entender, no es el algoritmo de clasificación más eficiente, especialmente para grandes conjuntos de datos. Su complejidad temporal es O(n^2) en el peor de los casos, donde 'n' es el número de elementos de la lista. Esta complejidad de tiempo cuadrático lo hace menos adecuado para grandes conjuntos de datos en comparación con algoritmos de clasificación más avanzados.

Implementación en Python de la clasificación de burbujas

Ahora, implementemos Bubble Sort en Python y observemos su comportamiento con una lista de muestra:

 def bubble_sort(arr): n = len(arr) # Traverse through all array elements for i in range(n): # Last i elements are already sorted, so we don't need to check them for j in range(0, n-i-1): # Swap if the element found is greater than the next element if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] # Example usage if __name__ == '__main__': # Sample list to be sorted sample_list = [64, 34, 25, 12, 22, 11, 90] # Display the original list print('Original List:', sample_list) # Apply Bubble Sort bubble_sort(sample_list) # Display the sorted list print('Sorted List:', sample_list) 

En esta implementación, la función bubble_sort toma una lista (arr) como parámetro y la ordena en el lugar. El bucle anidado compara elementos adyacentes y los intercambia si están en el orden incorrecto. El bucle externo garantiza que el proceso se repita hasta que se ordene toda la lista.

Salida y explicación

Ejecutemos el código Python proporcionado con la lista de muestra y observemos el resultado:

 Original List: [64, 34, 25, 12, 22, 11, 90] Sorted List: [11, 12, 22, 25, 34, 64, 90] 

Aquí, la lista original [64, 34, 25, 12, 22, 11, 90] se ordena correctamente utilizando el algoritmo Bubble Sort, lo que da como resultado la lista ordenada [11, 12, 22, 25, 34, 64, 90].

El algoritmo recorre la lista varias veces, comparando e intercambiando elementos hasta que se ordena toda la lista. En cada pasada, el elemento más grande sin clasificar 'sube' a su posición correcta. Este proceso continúa hasta que no se necesitan más intercambios, lo que indica que la lista está completamente ordenada.

Si bien Bubble Sort ordena la lista con éxito, es importante tener en cuenta que su complejidad temporal lo hace menos eficiente para conjuntos de datos grandes en comparación con otros algoritmos de clasificación como Merge Sort o Quick Sort.

Complejidad temporal de la clasificación de burbujas

Comprender la complejidad temporal de un algoritmo es crucial para evaluar su eficiencia, especialmente cuando se trata de grandes conjuntos de datos. La complejidad temporal de Bubble Sort es O(n^2) en el peor de los casos, donde 'n' es el número de elementos de la lista.

Analicemos el análisis de la complejidad del tiempo:

  • El bucle externo se ejecuta durante 'n' iteraciones, donde 'n' es el número de elementos de la lista.
  • El bucle interno también se ejecuta durante 'n' iteraciones en el peor de los casos. Sin embargo, a medida que avanza el algoritmo, el número de iteraciones en el bucle interno disminuye, ya que el elemento sin clasificar más grande se coloca en su posición correcta en cada pasada.
  • En el peor de los casos, el número de comparaciones e intercambios es proporcional al cuadrado del número de elementos de la lista, lo que da como resultado una complejidad temporal O(n^2). Esto hace que Bubble Sort sea ineficiente para grandes conjuntos de datos, y en aplicaciones del mundo real a menudo se prefieren algoritmos de clasificación más avanzados con mejores complejidades temporales.

Conclusión

En este artículo, exploramos el concepto de Bubble Sort, un algoritmo de clasificación simple que compara e intercambia repetidamente elementos adyacentes hasta que se ordena toda la lista. Proporcionamos una implementación en Python de Bubble Sort, la ejecutamos con una lista de muestra y analizamos el resultado. Además, analizamos la complejidad temporal de Bubble Sort, destacando su complejidad temporal O(n^2) en el peor de los casos y sus implicaciones para la eficiencia.