Ordenamiento Burbuja

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");

    }