Cómo implementar un tipo de fusión en Java

Cómo implementar un tipo de fusión en Java

En la programación de Java, puede haber casos en los que el desarrollador necesita ordenar las entradas a granel. Por ejemplo, organizar o analizar los valores generados aleatoriamente. En tales casos, el "fusionar"En Java es efectivo y más rápido, consumiendo así menos tiempo para ordenar las entradas o listas más largas en comparación con otros algoritmos I.mi., "Ordenamiento de burbuja".

Este blog explicará la implementación del algoritmo de "clasificación de fusión" en Java.

Cómo implementar un "tipo de fusión" en Java?

El "fusionar"Se basa en el"divide y conquistaras"Algoritmo de tal manera que la matriz se divide en mitades iguales y luego se subdivide aún más hasta que la división ya no se pueda hacer. Después de subdividir la matriz, se fusiona nuevamente en función de los elementos de una manera ordenada (ascendente).

Demostración del algoritmo de "clasificación de fusión"

Vamos a ver el código proporcionado a continuación para comprender el concepto discutido:

clase pública Mergesort
public static void fusedArray (int [] LeftArray, int [] RightArray, int [] FinalArray, int LeftArrayize, int RightArraySize)
int item = 0, izquierda = 0, derecha = 0;
mientras (izquierdaif (LeftArray [izquierda]FinalArray [item ++] = LeftArray [Left ++];

demás
FinalArray [item ++] = rightArray [Right ++];

mientras (izquierdaFinalArray [item ++] = LeftArray [Left ++];

Mientras (correctoFinalArray [item ++] = rightArray [Right ++];


En el código anterior asignado para fusionar, aplique los siguientes pasos:

    • Defina una función llamada "estrella fusionada"Tener los parámetros establecidos para las matrices izquierda y derecha, la matriz original y los tamaños de los matrices izquierdo y derecho, respectivamente.
    • En la definición de función, inicialice los valores establecidos para aplicar una condición más adelante en el código.
    • En el siguiente paso, aplique el combinado "mientras"Loop y"si"Condición para verificar la condición para fusionar.
    • Es tal que si el elemento en la matriz izquierdo es más pequeño que el del elemento de matriz derecho en un índice en particular, la matriz fusionada se adjunta con el elemento de matriz izquierdo que comienza de izquierda a derecha.
    • En el otro caso, se adjunta el elemento de matriz correcto.
    • Después de eso, aplique el "mientras"Luce para verificar si solo los elementos en la matriz izquierda o derecha quedan y los agregan a la matriz en consecuencia.

Implementación


Ahora, pasemos al siguiente fragmento de código:

public static void dividearray (int [] array, int longitud)
if (longitud < 2)return;
int div = longitud / 2;
int [] larray = new int [div];
int [] rarray = new int [longitud-div];
int temp = 0;
para (int i = 0; iif (ilarray [i] = array [i];

demás
rarray [temp] = array [i];
temp = temp+1;

dividearray (larray, div);
divideArray (rarray, longitud-div);
fusedarray (larray, rarray, array, div, longitud-div);


En este código implementado para dividir la matriz aprobada, realice los pasos proporcionados a continuación:

    • Defina la función "divideArray ()"Tener los parámetros apuntando a la matriz pasada y su longitud.
    • Ahora, verifique la condición de modo que la longitud de la matriz no sea mayor que "2". Si es así, devuelva la matriz como está. Más, ejecute las funcionalidades adicionales.
    • Después de eso, divida la matriz en dos mitades iguales a través de su longitud (matriz) pasada.
    • En el siguiente paso, cree dos matrices enteras basadas en la longitud dividida de la matriz pasada.
    • Ahora, agregue las matrices divididas izquierda y derecha con los elementos de matriz aprobados.
    • Por último, invoque esta función recursivamente en estas dos matrices divididas que acumulan los datos copiados de la matriz aprobada original y acceden al "fusedArray ()"Función que compara y clasifica los matrices izquierdo y derecho.

Implementación


Ahora, consulte el "principal"Código:

public static void main (string args [])
int [] MergesortArray = 30, 12, 46, 6, 17, 23;
divideArray (MergesortArray, MergesortArray.longitud);
para (int i = 0; i< mergesortArray.length;++i)
Sistema.afuera.imprimir (MergeSortArray [i]+ "");


En el "principal", Aplique los siguientes pasos:

    • Declarar una matriz llamada "mergeortarray"Eso necesita ser ordenado.
    • En el siguiente paso, invoca la función "divideArray ()"Al pasar la matriz declarada y su longitud a través del"longitud"Propiedad, como sus argumentos, respectivamente.
    • Después de eso, itere a través de la matriz y muestre los elementos de matriz ordenados a través del "para" bucle.
    • Algoritmo: La matriz proporcionada se pasará a la función "divideArray ()"Que divide la matriz y esta función invoca la función"fusedArray ()Que fusiona las matrices divididas basadas en los elementos contenidos.

Implementación


Código completo

clase pública Mergesort
public static void fusedArray (int [] LeftArray, int [] RightArray, int [] FinalArray, int LeftArrayize, int RightArraySize)
int item = 0, izquierda = 0, derecha = 0;
mientras (izquierdaif (LeftArray [izquierda]FinalArray [item ++] = LeftArray [Left ++];

demás
FinalArray [item ++] = rightArray [Right ++];

mientras (izquierdaFinalArray [item ++] = LeftArray [Left ++];

Mientras (correctoFinalArray [item ++] = rightArray [Right ++];

public static void dividearray (int [] array, int longitud)
if (longitud < 2)return;
int div = longitud / 2;
int [] larray = new int [div];
int [] rarray = new int [longitud-div];
int temp = 0;
para (int i = 0; iif (ilarray [i] = array [i];

demás
rarray [temp] = array [i];
temp = temp+1;

dividearray (larray, div);
divideArray (rarray, longitud-div);
fusedarray (larray, rarray, array, div, longitud-div);

public static void main (string args [])
int [] MergesortArray = 30, 12, 46, 6, 17, 23;
divideArray (MergesortArray, MergesortArray.longitud);
para (int i = 0; i< mergesortArray.length;++i)
Sistema.afuera.imprimir (MergeSortArray [i]+ "");


Producción


En esta salida, se puede implicar que la matriz pasada se clasifica adecuadamente.

Conclusión

El tipo de fusión se basa en el "divide y conquistaras"Algoritmo de tal manera que la matriz se subdivide en mitades iguales y se fusiona nuevamente en función de los elementos ordenados. El resultado del algoritmo se obtiene de acuerdo con el original de una manera ordenada. Este blog discutió la implementación del algoritmo de clasificación de fusión en Java.