Vector 4: 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.

 

Algoritmo:

// 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;
                     }   
               }
          }

 

 

Funcionamiento burbuja

funcionamiento burbuja

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.

 

Ejemplo de ordenamiento

package pqtVector;

public class Burbuja {

    public static void main(String[] args) {
        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]+" ");
        }
    }
}
resultado