Explicación

El Método de la Burbuja funciona comparando y, si es necesario, intercambiando pares adyacentes de elementos en la lista. Este proceso se repite múltiples veces, pasando repetidamente a través de la lista, hasta que no se necesitan más intercambios. La idea básica es que los elementos "burbujearán" hacia su posición correcta en cada pasada.

Para entender mejor este concepto, imagine burbujas en un vaso de refresco. Las burbujas más grandes (números mayores) suben a la superficie mientras las más pequeñas (números menores) quedan abajo.

Aunque el Método de la Burbuja no es el más eficiente, es un excelente punto de partida para aprender sobre algoritmos de ordenamiento.

Ejemplo Visual

Consideremos una lista inicial: [4, 5, 2, 1, 3]

Vuelta 1:
1. Comparar 4 y 5, no se hace nada.
2. Comparar 5 y 2, intercambiar.
3. Comparar 5 y 1, intercambiar.
4. Comparar 5 y 3, intercambiar.

Resultado después de la primera vuelta: [4, 2, 1, 3, 5]

Vuelta 2:
1. Comparar 4 y 2, intercambiar.
2. Comparar 4 y 1, intercambiar.
3. Comparar 4 y 3, intercambiar.

Resultado después de la segunda vuelta: [2, 1, 3, 4, 5]

Vuelta 3:
1. Comparar 2 y 1, intercambiar.
2. Comparar 2 y 3, no se hace nada.
3. Comparar 3 y 4, no se hace nada.

Resultado después de la tercera vuelta: [1, 2, 3, 4, 5]

La lista está ahora ordenada.

Implementación en C++

Aquí tienes una implementación en C++ del Método de la Burbuja:

// Método Burbuja
#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    int numeros[] = {4, 1, 2, 3, 5};
    int n = 5; // Tamaño del array
    int aux;

    // Algoritmo del método burbuja
    for(int i = 0; i < n-1; i++) {
        for(int j = 0; j < n-1-i; j++) {
            if(numeros[j] > numeros[j+1]) {
                aux = numeros[j];
                numeros[j] = numeros[j+1];
                numeros[j+1] = aux;
            }
        }
    }

    // Imprimir array ordenado en orden ascendente
    cout << "Orden Ascendente: \n";
    for(int i = 0; i < n; i++) {
        cout << numeros[i] << " ";
    }

    cout << "\nOrden Descendente: \n";
    for(int i = n-1; i >= 0; i--) {
        cout << numeros[i] << " ";
    }

    getch();
    return 0;
}

Notas

  • Eficiencia: El Método de la Burbuja tiene una complejidad temporal de $O(n^2)$, lo que lo hace ineficiente para listas grandes.
  • Uso educativo: Es ideal para entender los conceptos básicos de ordenamiento y para aprender sobre algoritmos iterativos y estructuras de control.