Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: User170294 en Agosto 10, 2013, 01:53:07 pm

Título: Ordenamiento de burbuja
Publicado por: User170294 en Agosto 10, 2013, 01:53:07 pm
Hola amigos!

La Ordenación de burbuja (Bubble Sort en inglés) 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.

Ejemplo de un programa que ordena una lista desordenada de números enteros mediante el método de la burbuja:
Código: [Seleccionar]
//Ordenamiento de burbuja
//Escrito por user170294
#include <stdio.h>

int main()
{
    unsigned char i, j, aux, ordenado;
    unsigned char lista[10] = { 9, 1, 4, 5, 2, 7, 3, 6, 8, 0 };
    //Imprimir lista
    printf("Lista >> [ ");
    for(i = 0; i < 10; i++)
        printf("%i ", lista[i]);
    printf("]\n");
    //Método de la burbuja
    for(i = 0; i <= 8; i++){
        for(j = (i + 1); j <= 9; j++){
            if(lista[i] > lista[j]){
                aux = lista[i];
                lista[i] = lista[j];
                lista[j] = aux;
            }
        }
    }
    //Imprimir lista
    printf("Lista >> [ ");
    for(i = 0; i < 10; i++)
        printf("%i ", lista[i]);
    printf("]\n");
   
    system("pause"); return 0;
}

Título: Re:Ordenamiento de burbuja
Publicado por: ravenheart en Agosto 11, 2013, 01:52:47 am
La gracia de la burbuja es que no tienes que recorrer todo el array entero en cada iteración del bucle principal, porque cada vez que se ejecuta dicho bucle, hay un elemento más ordenado en el array. Te dejo que lo medites :)
Título: Re:Ordenamiento de burbuja
Publicado por: $Reveles en Agosto 11, 2013, 02:25:02 am
como dice ravenheart, en el segundo ciclo se debe hacer for j=i+1 de hecho esto de ordenamientos es todo un arte, donde el de la burbuja es de los menos efectivos les dejo un link interesante
http://www.paginasprodigy.com/edserna/cursos/estddatos/notas/Unidad3.Ordenamientos.pdf (http://www.paginasprodigy.com/edserna/cursos/estddatos/notas/Unidad3.Ordenamientos.pdf)
Saludos Familia!!
Título: Re:Ordenamiento de burbuja
Publicado por: User170294 en Agosto 11, 2013, 12:33:28 pm
ravenheart
creo que te refieres a esto no?
Código: [Seleccionar]
//Ordenamiento de burbuja
//Escrito por user170294
#include <stdio.h>

int main()
{
    unsigned char i, j, aux, ordenado;
    unsigned char lista[10] = { 9, 1, 4, 5, 2, 7, 3, 6, 8, 0 };
    //Imprimir lista
    printf("Lista >> [ ");
    for(i = 0; i < 10; i++)
        printf("%i ", lista[i]);
    printf("]\n");
    //Método de la burbuja
    for(i = 0; i <= 8; i++){
        for(j = (i + 1); j <= 9; j++){
            if(lista[i] > lista[j]){
                aux = lista[i];
                lista[i] = lista[j];
                lista[j] = aux;
            }
        }
    }
    //Imprimir lista
    printf("Lista >> [ ");
    for(i = 0; i < 10; i++)
        printf("%i ", lista[i]);
    printf("]\n");
   
    system("pause"); return 0;
}

$Reveles
gracias por el material, voi ha hecharle un vistazo y a ponerlo en práctica
Título: Re:Ordenamiento de burbuja
Publicado por: ravenheart en Agosto 11, 2013, 02:48:36 pm
ravenheart
creo que te refieres a esto no?

Si, exacto. No sé si la implementación es correcta, pero la idea es esa :)