Ordenando Listas Simples: El Ordenamiento de Burbuja en Python

El ordenamiento de listas es una tarea fundamental en la programación y en la ciencia de la computación. Existen diversos algoritmos de ordenamiento, cada uno con sus propias características y eficiencia. Uno de los algoritmos más conocidos y sencillos es el algoritmo Burbuja (Bubble Sort). Este algoritmo funciona comparando cada par de elementos adyacentes en una lista y, si están en el orden incorrecto, los intercambia. Este proceso se repite hasta que la lista esté completamente ordenada. Aunque no es el más eficiente para listas grandes, el algoritmo Burbuja es fácil de entender y de implementar, lo que lo convierte en una excelente herramienta pedagógica para aprender sobre ordenamiento.

Ordenando Listas Simples: El Ordenamiento de Burbuja en Python
Ordenando Listas Simples: El Ordenamiento de Burbuja en Python

¿Qué es el Ordenamiento de Burbuja?

En Python, el algoritmo Burbuja puede ser implementado de manera sencilla utilizando bucles anidados. El proceso comienza con un bucle externo que recorre todos los elementos de la lista. Dentro de este bucle, un bucle interno compara cada par de elementos adyacentes y los intercambia si están en el orden incorrecto. Este intercambio asegura que, con cada iteración del bucle externo, el elemento más grande de la lista se mueva hacia su posición correcta. A medida que el algoritmo avanza, los elementos más grandes "burbujean" hacia el final de la lista, de ahí su nombre. Aunque su complejidad temporal es O(n2)O(n2), lo que lo hace ineficiente para listas grandes, el algoritmo Burbuja sigue siendo una herramienta valiosa para entender los conceptos básicos de ordenamiento y para resolver problemas de ordenamiento en listas pequeñas

Funcionamiento del Algoritmo

  • Comienza desde el primer elemento de la lista.
  • Compara el elemento actual con el siguiente.
  • Si el elemento actual es mayor que el siguiente, se intercambian.
  • Se avanza al siguiente par de elementos y se repite el proceso.
  • Este proceso se repite para toda la lista, y se hace una nueva pasada hasta que no se realicen más intercambios.

Implementación en Python

A continuación, se presenta una implementación simple del algoritmo de ordenamiento de burbuja en Python:


              def bubble_sort(arr):
              n = len(arr)
              # Recorremos todos los elementos de la lista
              for i in range(n):
                  # Últimos i elementos ya están en su lugar
                  for j in range(0, n-i-1):
                      # Intercambiamos si el elemento encontrado es mayor que el siguiente
                      if arr[j] > arr[j+1]:
                          arr[j], arr[j+1] = arr[j+1], arr[j]
            

Explicación del código

  • Definición de la función bubble_sort: La función toma una lista arr como argumento.
  • Longitud de la lista n = len(arr): obtiene la longitud de la lista
  • Bucle externo n = len(arr): obtiene la longitud de la lista
  • Bucle for j in range(0, n-i-1): Este bucle se ejecuta desde el inicio de la lista hasta n-i-1, ya que los últimos i elementos ya están en su lugar correcto.
  • Comparación e intercambio:
    • if arr[j] > arr[j+1]: Si el elemento actual es mayor que el siguiente, se intercambian.
    • arr[j], arr[j+1] = arr[j+1], arr[j]: Intercambio de elementos.

Ejemplo de Uso

  • Se define una lista arr con algunos elementos: arr = [64, 34, 25, 12, 22, 11, 90].
  • Se imprime la lista original: print("Lista original:", arr).
  • Se llama a la función bubble_sort para ordenar la lista: bubble_sort(arr)
  • Se imprime la lista ordenada: print("Lista ordenada:", arr)

Método sort()

El método sort() en Python se utiliza para ordenar los elementos de una lista en su lugar, es decir, modifica la lista original en vez de crear una nueva lista ordenada. Este método es muy útil cuando se necesita mantener la lista original ordenada sin crear copias adicionales.

Sintaxis

                
                  my_list.sort(key=None, reverse=False)
                
              

Parámetros

  • key: (opcional) Una función que sirve como clave para el proceso de ordenación. Por defecto, es None, lo que significa que los elementos se ordenan en su forma natural.
  • reverse: (opcional) Un valor booleano que, si es True, ordena la lista en orden descendente. Por defecto, es False, lo que significa que la lista se ordena en orden ascendente.

Ejemplos

  • Ordenar una lista de números en orden ascendente:
                        
                          my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
                          my_list.sort()
                          print(my_list)  # Salida: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
                        
                    
  • Ordenar una lista de números en orden descendente:
                        
                          my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
                          my_list.sort(reverse=True)
                          print(my_list)  # Salida: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
                        
                      
  • Ordenar una lista de cadenas en orden alfabético:
                        
                          my_list = ["banana", "apple", "cherry", "date"]
                          my_list.sort()
                          print(my_list)  # Salida: ['apple', 'banana', 'cherry', 'date']
                        
                      

COMENTARIOS

Si tiene alguna inquietud, duda o ha encontrado algún error, por favor infórmelo a través del formulario disponible para este propósito.

La política de privacidad, y los términos y condiciones están disponibles en el formulario de contacto.