Está en la página 1de 5

METODO DE BURBUJA Sabrina Lizeth Torres Delgado

La Ordenación de burbuja es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la


lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado.
Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa
que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los
elementos durante los intercambios, como si fueran pequeñas "burbujas". También es conocido como el
método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un
algoritmo de comparación, siendo el más sencillo de implementar.

Aqui el codigo en C:

#include<stdio.h>
int main ()
{
int aux,i,j,k;
int n=10,A[n];

for (i=0; i<n; i++)


{
printf("dame el dato %dn",i+1);
scanf("%d",&A);
}
for (i=0;i<n;i++)
{
for (j=0;j<n-i;j++)
{
if (A[j]>=A[j+1])
{
aux=A[j];
A[j]=A[j+1];
A[j+1]=aux;
}

}
for (k=0;k<n;k++)
{
printf(" %d",A[k]);
}
METODO DE BURBUJA Sabrina Lizeth Torres Delgado
return 0;
}

El método de ordenamiento de burbuja, es un algoritmo que se aplica para poder ordenar una cantidad de
datos ya sea de forma ascendente o descendente.
Es el algoritmo más fácil de implementar, pero a cambio pagamos un alto precio en procesamiento, ya que
este método evalúa los datos muchas veces y en ocasiones innecesariamente (como por ejemplo cuando son
iguales).
A estas alturas posiblemente ya tengas conocimiento de sencillos pasos para ordenar datos, como por
ejemplo, Determinar cuál es el mayor o menor de dos números, pues aplicando este método podremos
ordenar array, estructuras y cualquier tipo de dato NO atómico (es decir que se pueda dividir)
Este libro trata de programación en C, entonces a continuación nos aplicamos a esto:

Explicación

Este método necesita de lo siguiente para implementarse:

 Un array o estructura que ordenar (>1 elemento).


 Dos variables contadoras de ciclos (i,j por ejemplo).
 Una variable temporal (para almacenar un dato momentáneamente).
 Dos ciclos y un Condicional...

....
//DE MENOR A MAYOR (Ascendente)
#define Nelementos 4
....

int i,j; //Variables contadoras del ciclo.


int lista[Nelementos]={6,9,3,1}; //Declaración e inicialización de un arreglo de 4
elementos.
int temp=0; //Variable temporal.

for (i=1;i<Nelementos;i++)
{
for (j=0; j <= Nelementos-i ;j++) // for(j=0; j < Nelementos-i; j++) es menor y no
menor igual
{
if (lista[j] > lista[j+1])//Condición mayor-menor
{
temp=lista[j];
lista[j]=lista[j+1];
lista[j+1]=temp;
}
METODO DE BURBUJA Sabrina Lizeth Torres Delgado

}
}
//Para cambiar el modo de ordenamiento solo debemos cambiar la condición < ó >

'''<big>Explicando un poco lo que dice el código tenemos:</big>'''

# Iniciamos i a 1, de esta forma correremos el ciclo solamente 3 veces. Así evitamos


correr ciclos innecesariamente.
# El segundo for, se ejecutara 3 veces por cada primer ciclo.
# La condición nos dice:
* Si, el valor de lista 0 es mayor al valor de lista 1, es decir
* '''Si, 6 > 9''', pero como la condición no se cumple, pasamos del ciclo y '''J=1'''.
* Si, el valor de lista 1 es mayor al valor de lista 2, es decir
* '''Si, 9 > 3''', como es '''verdadera''' hacemos:
# Guardamos momentáneamente en la variable temporal el valor de lista 1, es decir 9.
# En la posición de lista 1, guardamos el valor de lista 2, es decir 3.
# En la posición de lista 2, guardamos el valor de temp, es decir 9
'''Volvemos''' nuevamente '''al ciclo''', ahora '''J=2'''...
* Si, el valor de lista 2 es mayor al valor de lista 3, es decir
* Si, '''9 > 1''', (recuerda que anteriormente '''movimos''' al 9 a la posición de 3), es
verdadera =>
# Guardamos momentáneamente en la variable temporal el valor de lista 2, es decir 9.
# En la posición de lista 2, guardamos el valor de lista 3, es decir 1.
# En la posición de lista 3, guardamos el valor de temp, es decir 9.

De esta forma el ciclo se repite hasta que todos los datos se hallan movido. Como veras
hasta ahora solo hemos estado moviendo el 9. Tu lista se veria asi:

* ''Original:'' 6 '''9''' 3 1
:* ''1er Mov:'' 6 3 '''9''' 1
:* ''2do Mov:'' 6 3 1 '''9'''

Si bien ya esta mas ordenada que la original, aun falta bastante, pero recuerda que
estábamos en el primer ciclo del primer for (i).

'''Acá te dejo como serán los demás movimientos:'''


* ''Segundo Ciclo i:''
:* 3 6 1 9
:* 3 1 6 9
METODO DE BURBUJA Sabrina Lizeth Torres Delgado

* ''Tercer Ciclo i:''


:* 1 3 6 9
:* YA!

En un principio, pensaba no presentarles las variaciones que hay de este algoritmo, pero
revisando en varios libros me percaté de que aunque es el mismo algoritmo y funciona de
la misma forma (con sus ventajas y desventajas), Creo que es preferible mostrárselos para
evitar confusiones y enredos innecesarios.

== Variantes ==

Buscando en varios libros e Internet me he encontrado numerosas variantes, y por motivos


pedagógicos voy a mostrarlos, ya que considero que aunque sean el mismo algoritmo, su
diferente implementación puede llevar a confusiones.

En lo personal considero que el algoritmo planteado al principio es el que mejor se


expresa (entiende), y es el que recomiendo implementar, pero hay libros que lo
implementan de otra forma, por lo que los que se guían con el, pueden tener confusiones a
la hora de apoyarse con este libro.

==== Variante: 1 Ciclo. ====

Aunque en realidad usa dos ciclos un while y un for, el while hace la función de nuestro
primer for. Sin embargo la demás implementaciones son técnicamente las mismas, solo que
en vez de usar una variable ya preparada (j en nuestro caso), este evalúa con la variable
i.

Variante: Restar
Esta es una de las más usuales que he visto en los libros, folletos y otros. Todo es igual, pero cambian las
condiciones, de esta forma se trabaja a la inversa de nuestro algoritmo.

Ejemplos
El algoritmo burbuja está preparado para correr con todo tipo de datos NO atómicos, es por esto que no
importa si el arreglo es de tipo char, int, float, etc. Funcionará con sus respectivas modificaciones.
El siguiente ejemplo ordenara una lista de tamaño 6, que esta ordenada. Recuerden como buena práctica:

 Definir las variables en un solo punto del código.


 Definir el tamaño del array como constante.
 Usar la indentacion correspondiente (Tabulaciones).
METODO DE BURBUJA Sabrina Lizeth Torres Delgado

//Realizado por Master crack cocaino


//UNAN-LEON Nicaragua.

#include <stdio.h>
#define TAM 6

int main()
{

int lista[TAM]={12,10,5,6,1,3}; //Declaración e Inicialización de un array


int temp=0; //Variable temporal
int i,j; //variables corredoras del ciclo

printf("La lista DESORDENADA es: \n");

for (i=0;i<TAM;i++)
printf("%3d",lista[i]); //impresión de la lista con espacio de 3 lineas (%3d)

for (i=1;i<TAM;i++)
{
for (j=0;j<TAM-1;j++)
{
if (lista[j] > lista[j+1]) //condicion
{
temp = lista[j]; //temp guarda momentáneamente el valor de
lista[j]
lista[j]=lista[j+1]; //Asigno al la posicion lista[j], lo que hay
en lista[j+1]
lista[j+1]=temp; //obtendra un nuevo valor por parte de temp.
}
}

printf("\nLos valores ORDENADOS de lista son: \n");


for(i=0;i<TAM;i++)
printf("%3d",lista[i]);

return 0;
}