ORDENAR VECTORES POR EL MÉTODO DE BURBUJA, INSERCIÓN Y SELECCION CON CLASES EN JAVA



Lo primero que haremos es crear un paquete llamado Lógica el cual contendrá una clase llamada OrdenarV, en esta crearemos el constructor por defecto y tres métodos.
OrdenarBurbuja(int tamaño,int[]vector)
OrdenarInsercion (int tamaño,int[]vector) 
OrdenarSeleccion(int tamaño,int[]vector)
Que recibirán como parámetro el vector y el tamaño del mismo.


La lógica del primer método será la siguiente:
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. 





El código seria el siguiente:

public int[] OrdenarBurbuja (int tamaño,int[]vector){
        
        int aux,i,j;
        
        for(i=0;i<=tamaño;i++){
            for(j=i+1;j<tamaño-1;j++){
                if (vector[i]>vector[j]){
                    aux=vector[i];
                    vector[i]=vector[j];
                    vector[j]=aux;
                }
            }
        }
        return vector;
    }

 La lógica del segundo método sería:
Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha) o cuando ya no se encuentran elementos (todos los elementos fueron desplazados y este es el más pequeño). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.


El código seria el siguiente:

public int[] OrdenarInsercion (int tamaño,int[]vector){
        int i,aux,j;
        for(i=1;i<tamaño;i++) { 
            j=i;
            aux=vector[i]; 
            while(j>0 && aux<vector[j-1]) { 
                    vector[j]=vector[j-1]; 
                    j--; 
                } 
            vector[j]=aux; 
        } 
        return vector;
    }

La lógica del tercer método seria la siguiente:
  • Buscar el mínimo elemento de la lista
  • Intercambiarlo con el primero
  • Buscar el mínimo en el resto de la lista
  • Intercambiarlo con el segundo
   Y en general:
  • Buscar el mínimo elemento entre una posición i y el final de la lista
  • Intercambiar el mínimo con el elemento de la posición i


El código seria el siguiente:

public int[] OrdenarSeleccion(int tamaño,int[]vector){
        int i,j,aux,minimo;
        for (i=0; i<tamaño;i++){
            minimo=i;
            for (j=i+1;j<tamaño;j++){
                if (vector[j]<vector[minimo]){
                    minimo=j;
                }
            }
            aux=vector[i];
            vector[i]=vector[minimo];
            vector[minimo]=aux;
            
        }
        return vector;
    }


Por ultimo crearemos la clase con el método principal Main para implementar dichos métodos mencionados anteriormente, donde debemos importar java.util.Scanner que es el paquete donde se encuentra la clase Scanner que es la que utilizaremos para leer los datos por consola y también importaremos el paquete Logica.OrdenarV  para poder implementar los métodos de ordenamientos.
El código completo es el siguiente.




Package Logica;

public class OrdenarV {

    public int[] OrdenarBurbuja (int tamaño,int[] vector) {
       int aux,i,j;
       
       for (i=0; i<tamaño;i++){
           for (j=i+1; i<tamaño;j++){
              if (vector[i]>vector[j]) {
                aux = vector[i];
                vector[i] = vector[j];
                vector[j] = aux;
            }
         }
       }
          return  vector;
   }

    public int[] OrdenarInsercion (int tamaño,int[] vector) {
       int aux,i,j;
       
       for (i=1; i<tamaño;i++){
          j = i;
          aux = vector[i];
           while (j>0 && aux < vector[j-1]){
             vector[j] = vector[j-1];
             j--;
         }
        vector[j] =aux;  
    }  
         return  vector;
  }
 
   public int[] OrdenarSeleccion (int tamaño,int[] vector) {
       int aux,i,j,minimo;
       
       for (i=0; i<tamaño;i++){
          j¡minimo = i;
              for (j=i+1; i<tamaño;j++){
                  if (vector[j] < vector[minimo]) {
                     minimo=j;
                  }
              }
              aux=vector[i];
              vector[i]=vector[minimo];
              vector[minimo]=aux; 
          }  
           return  vector;
    }
}
  
 


Package Logica;
import java.util.Scanner;
import Logica.OrdenarV;

public class Main {

    public static void main(String[] args) {
       Scanner entrada= new Scanner(System.in); // creamos un objeto de la clase Scanner
       int n,i;
       System.out.println("digite tamaño del vector");
       n=entrada.nextInt(); // leemos el dato (tamaño del vector) y se le asigna a la variable n
       
       int[] vector= new int[n]; // declaramos el vector
       System.out.println("digite numeros del vector");
       
       for (i=0; i<n;i++){
           vector[i]= entrada.nextInt(); // llenamos el vector
        }
       
       OrdenarV v= new OrdenarV(vector); // creamos una instancia de la clase ordenar
       
       v.OrdenarBurbuja(n, vector); // llamamos al metodo OrdenarBurbuja
       System.out.println("datos del vector ordenado");
       for (i=0;i<n;i++){
           System.out.println(vector[i]);
        }
       }
   }

En este ejemplo estamos haciendo uso del método OrdenarBurbuja, pero si queremos hacer uso de otro método solo debemos cambiar la instrucción v.OrdenarBurbuja(n, vector) por v.OrdenarInsercion(n, vector) ó v.OrdenarSleccion(n, vector).


Ejecución del programa:







Previous
Next Post »