Dans la programmation Java, il peut y avoir des cas où le développeur doit trier les entrées en vrac. Par exemple, organiser ou analyser les valeurs générées aléatoires. Dans de tels cas, le «tri par fusion«En Java est efficace et plus rapide, consommant ainsi moins de temps pour trier les entrées ou listes plus longues par rapport aux autres algorithmes I.e., "Tri bulle".
Ce blog va développer la mise en œuvre de l'algorithme de «fusion» en Java.
Comment implémenter un «tri de fusion» dans Java?
Le "tri par fusion"Est basé sur le"diviser et conquérir”Algorithme tel que le tableau est divisé en moitiés égales, puis subdivisé jusqu'à ce que la division ne puisse plus être effectuée. Une fois le tableau subdivisé, il est fusionné à nouveau en fonction des éléments de manière triée (ascendante).
Démonstration de l'algorithme «fusion»
Présentation du code fourni ci-dessous pour comprendre le concept discuté:
classe publique Mergesort
public static void fusionArray (int [] LeftArray, int [] droite, int [] finalArray, int LeftArraySize, int droiteraRaySize)
Int item = 0, gauche = 0, droit = 0;
tandis que (à gauchesi (gauche [gauche] finalArray [item ++] = LeftArray [Left ++];
autre
finalArray [item ++] = rightArray [droit ++];
tandis que (à gauchefinalArray [item ++] = LeftArray [Left ++];
Pendant (à droitefinalArray [item ++] = rightArray [droit ++];
Dans le code ci-dessus alloué à la fusion, appliquez les étapes suivantes:
Mise en œuvre
Maintenant, passons à l'extrait de code suivant:
public static void dividearray (int [] array, int leghe)
si (longueur < 2)return;
int div = longueur / 2;
int [] lArray = new int [div];
int [] rArray = new int [longueur-div];
int temp = 0;
pour (int i = 0; iif (ilArray [i] = array [i];
autre
rarray [temp] = array [i];
temp = temp + 1;
Dividearray (Larray, Div);
Dividearray (Rarray, longueur-div);
MergedArray (Larray, Rarray, Array, Div, Longueur-Div);
Dans ce code implémenté pour diviser le tableau passé, effectuez les étapes ci-dessous:
Mise en œuvre
Maintenant, aperçu du «principal»Code:
public static void main (String args [])
int [] MergesortArray = 30, 12, 46, 6, 17, 23;
DivideArray (MergesortArray, MergesortArray.longueur);
pour (int i = 0; i< mergesortArray.length;++i)
Système.dehors.print (MergesortArray [i] + "");
Dans le "principal», Appliquez les étapes suivantes:
Mise en œuvre
Code entier
classe publique Mergesort
public static void fusionArray (int [] LeftArray, int [] droite, int [] finalArray, int LeftArraySize, int droiteraRaySize)
Int item = 0, gauche = 0, droit = 0;
tandis que (à gauchesi (gauche [gauche] finalArray [item ++] = LeftArray [Left ++];
autre
finalArray [item ++] = rightArray [droit ++];
tandis que (à gauchefinalArray [item ++] = LeftArray [Left ++];
Pendant (à droitefinalArray [item ++] = rightArray [droit ++];
public static void dividearray (int [] array, int leghe)
si (longueur < 2)return;
int div = longueur / 2;
int [] lArray = new int [div];
int [] rArray = new int [longueur-div];
int temp = 0;
pour (int i = 0; iif (ilArray [i] = array [i];
autre
rarray [temp] = array [i];
temp = temp + 1;
Dividearray (Larray, Div);
Dividearray (Rarray, longueur-div);
MergedArray (Larray, Rarray, Array, Div, Longueur-Div);
public static void main (String args [])
int [] MergesortArray = 30, 12, 46, 6, 17, 23;
DivideArray (MergesortArray, MergesortArray.longueur);
pour (int i = 0; i< mergesortArray.length;++i)
Système.dehors.print (MergesortArray [i] + "");
Sortir
Dans cette sortie, il peut être laissé entendre que le tableau passé est trié de manière appropriée.
Conclusion
Le tri de fusion est basé sur le «diviser et conquérir”Algorithme tel que le tableau est subdivisé en moitiés égales et fusionné à nouveau en fonction des éléments triés. Le résultat de l'algorithme est récupéré conformément à l'original d'une manière triée. Ce blog a discuté de la mise en œuvre de l'algorithme de tri Merge en Java.