Ordenamiento Burbuja

Burbuja es un método de ordenamiento de datos usado en los vectores, funciona revisando cada elemento de un vector con el elemento siguiente cambiando de posición si están en orden equivocado. Es el algoritmo de ordenamiento más sencillo de programar pero poco eficiente a la hora de ordenar cientos o miles de datos.


Su funcionamiento es acomodar el valor menor en la posición 0 del vector y el valor mayor en la posición final del vector comparando valor por valor de cada elemento de un vector.


Una de las deficiencias del algoritmo es que, cuando ya ha ordenado parte del vector vuelve a comparar valores que ya no son necesario comparar.

En nuestro ejemplo el vector queda ordenado en la segunda iteración, sin embargo el algoritmo comparará número con número hasta terminar los ciclos, aún cuando ya está ordenado el vector.

Código del algoritmo burbuja

// Repetimos el procesos n-1 veces para un arreglo de tamaño n.
        for(int i=0; i < vec.length-1; i++){
         // En cada iteración llegamos hasta n-1-i ya que hemos ordenado i enteros
         //en las i iteraciones pasadas.
               for(int j=0; j < (vec.length-1-i); j++){ 
                   //Comparamos e intercambiamos si se cumple la condición
                    if(vec[j] > vec[j+1]){ 
                            aux=vec[j];                
                            vec[j]=vec[j+1];          
                            vec[j+1]=aux;
                     }   
               }
          }

Implementación

public class Burbuja {
        
        public static void main(String arg[]){  
                int vec[]={6,8,3,5,4,9,0,2,1,7};
            System.out.print("Vector sin ordenar: ");
            for(int i=0;i<vec.length;i++){
                System.out.print(vec[i]+" ");
            }
            //Ordenamiento
            for(int i=0; i < vec.length-1; i++){
                   for(int j=0; j < (vec.length-1-i); j++){  
                        if(vec[j] > vec[j+1]){  
                                int aux=vec[j];                 
                                vec[j]=vec[j+1];           
                                vec[j+1]=aux;
                         }    
                   }
              }
            System.out.print("\nVector ordenado: ");
            for(int i=0;i<vec.length;i++){
                System.out.print(vec[i]+" ");
            }
        }
}