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