Upload
manuelmendoza
View
6
Download
0
Embed Size (px)
DESCRIPTION
Investigación del Ordenamiento burbuja y desarrollo de un código en lenguaje c
Citation preview
Ordenamiento Burbuja
La Ordenacin de burbuja (Bubble Sort en ingls) es un sencillo algoritmo de
ordenamiento. Funciona revisando cada elemento de la lista que va a ser
ordenada con el siguiente, intercambindolos de posicin si estn en el orden
equivocado. Es necesario revisar varias veces toda la lista hasta que no se
necesiten ms 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 pequeas "burbujas".
Tambin es conocido como el mtodo del intercambio directo. Dado que solo usa
comparaciones para operar elementos, se lo considera un algoritmo de
comparacin, siendo el ms sencillo de implementar.
Una manera simple de expresar el ordenamiento de burbuja en
pseudocdigo es la siguiente:
Este algoritmo realiza el ordenamiento o reordenamiento de una lista a de n
valores, en este caso de n trminos numerados del 0 al n-1; consta de dos bucles
anidados, uno con el ndice i, que da un tamao menor al recorrido de la burbuja
en sentido inverso de 2 a n, y un segundo bucle con el ndice j, con un recorrido
desde 0 hasta n-i, para cada iteracin del primer bucle, que indica el lugar de la
burbuja.
La burbuja son dos trminos de la lista seguidos, j y j+1, que se comparan: si el
primero es menor que el segundo sus valores se intercambian.
Esta comparacin se repite en el centro de los dos bucles, dando lugar a la postre
a una lista ordenada. Puede verse que el nmero de repeticiones solo depende de
n y no del orden de los trminos, esto es, si pasamos al algoritmo una lista ya
ordenada, realizar todas las comparaciones exactamente igual que para una lista
no ordenada. Esta es una caracterstica de este algoritmo. Luego veremos una
variante que evita este inconveniente.
Programa en lenguaje c
#include
#include
/*funcion que se encargara de ordenar el arreglo*/
void burbuja(int *item, int cont) {
int i, j, ordenado = 0;
int temp;
for (i = 1; i < cont; i++) {
for (j = cont-1; j >= i; j--) {
ordenado = 0;
if (item[j-1] > item[j]) {
temp = item[j-1];
item[j-1] = item[j];
item[j] = temp;
ordenado++;
}
}
/*cuando la variable ordenado sea igual a 0 significara que el arreglo
este ordenado y no sera necesario seguir recorriendo el arreglo para
hacer comparaciones*/
if (ordenado == 0)
break;
}
}
int main(void) {
int tam, n;
/*definimos el tamao del arreglo*/
printf("Ingrese el Tamao del Arreglo(Cantidad de Valores): ");
scanf("%d", &tam);
printf("\n");
int arreglo[tam];
/*ingresamos valores al arreglo*/
for (n = 0; n < tam; n++)
{
printf("Ingrese el Valor %d al Arreglo: ", n+1);
scanf("%d", &arreglo[n]);
}
/*mostramos el arreglo original*/
printf("\nArreglo Original: ");
for (n = 0; n < tam; n++)
printf("%d ", arreglo[n]);
printf("\n");
/*hacemos el llamado a la funcion burbuja, a la cual le pasamos como
parametros el arreglo y el tamao*/
burbuja(arreglo, tam);
/*mostramos el arreglo ordenado*/
printf("\nArreglo Ordenado: ");
for (n = 0; n < tam; n++)
printf("%d ", arreglo[n]);
printf("\n\n");
system("pause");
}