Mezcla Natural (Metodos de Ordenamiento) [Programación]

public class Mezcla 
{ 
    public void Mezcla()
    {
    
    int A[], f=0;
    f=Integer.parseInt(JOptionPane.showInputDialog(null, "Total de numeros a ordenar?"));
    A=new int [f];
    for(int i=0; i<f; i++)
    {
        A[i]=Integer.parseInt(JOptionPane.showInputDialog(null, "Introduce numero:"));
    }
    mergeSort (A,0,A.length-1);

    String c="";
    for (int i=0;i<A.length;i++) 
    {
        c=c+"Ordenados son:"+A[i]+"\n";
    }
    JOptionPane.showMessageDialog(null, c);
} 
    void mergeSort (int A[], int bajo, int alto) 
    { 
        if (bajo < alto) //Si hay más de un elemento 
        { 
            int medio = (alto + bajo)/2; 
            mergeSort (A, bajo, medio); //Llamada recursiva con la mitad de los elementos 
            mergeSort (A, medio+1, alto); //Llamada recursiva con la otra mitad de los elementos 
            merge (A, bajo, medio+1, alto);//Procedimiento que mezcla el resultado de las dos llamadas anteriores 
        }
    }
    void merge (int A[], int bajo, int bajo_2, int alto) 
    { 
        int i = bajo;//Variable de primer elemento de la primera subsecuencia 
        int finbajo = bajo_2 -1; //Variable del último elemento de la primera subsecuencia 
        int j = bajo_2;//Variable del primer elemento de la segunda subsecuencia 
        int k = bajo; // posicion del temporal 

/*Se introducen en un array Temporal los elementos ordenados 
de las dos subsecuencias, hasta el momento en que una de las 
subsecuencias ya tiene todos los elementos ordenados*/ 

        int Temp[]=new int [ A.length]; 
        while (( i <= finbajo) && (j<= alto)) 
        { 
            if (A[i] <= A[j]) 
            Temp[k++] = A[i++]; 
            else 
            Temp[k++] = A[j++]; 
        } 
        while (i <= finbajo) //Si se agotaron todos los elementos de la segunda subsecuencia 
        Temp[k++] = A[i++]; 
        while (j <= alto) //Si se agotaron los de la primera subsecuencia 
        Temp[k++] = A[j++]; 

//Paso todos los elementos del Temporal al vector 
        for (i = bajo; i <= alto; i++) 
        A[i] = Temp[i]; 
    } 

    public static void main(String args[]) 
    {
        Mezcla  o= new Mezcla();
        o.Mezcla();
    } 
}  
Compartir es Gratis:


0 Comentarios:

Back to Top