BURBUJA

Implementación del algoritmo del ordenación.

Este algoritmo es fácil de implementar, ordena una cantidad de datos de forma ascendente o descendente, pero se paga un alto precio de procesamiento.

El algoritmo de ordenación de la burbuja trabaja de la siguiente manera:

Ordenación ascendiente
Coge el primer elemento y el segundo elemento y los compara, si el primero el mayor que el segundo, intercambia las posiciones. Luego compara el segundo con el tercero y si es mayor el segundo los intercambia y así hasta llegar al último elemento.


En el gráfico nos muestra como el primer elemento, 8,  asciende hasta el final,  como una burbuja. Ahora comenzaría de nuevo con el segundo elemento comparando con el resto y así hasta llegar al último elemento.

Una posible implementación de este algoritmo sería:


Si la cantidad de elementos es muy elevada, este algoritmo se vuelve lento, ya que tiene que comparar todos los elementos con todos en todas las iteraciones.

Otro ejemplo, esta vez con cadenas:

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>

#define num_elemt 7
#define tam_cads 20


int main(void){

char cadenas[][tam_cads] =  
              {"Movil","Hola","Pringado","Adios","Raton","Cuchiflu","Teclado"};

char temp[tam_cads];
int i, x, j, result;

//Se muestra el array antes de ordenar
    printf("\nOriginal: ");
for(i = 0; i < num_elemt; i++)
printf("%s ",cadenas[i]);

printf("\n\n");

for(x = 0; x <= num_elemt; x++){
for(j = 0; j < num_elemt - 1; j++){
           //strcmp devuelve un valor mayor de 0 si la segunda cadena es mayor que la primera
result = strcmp(cadenas[j], cadenas[j + 1]);

if( result > 0){
strcpy(temp,cadenas[j]);
strcpy(cadenas[j],cadenas[j + 1]);
strcpy(cadenas[j + 1],temp);
}

}

}
//Se muestran el array ordenado de menor a mayor
printf("\n");
for(i = 0; i < num_elemt; i++)
printf("%s ", cadenas[i]);
printf("\n");

return 0;
}