Comment implémenter un type de fusion en java

Comment implémenter un type de fusion en java

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:

    • Définissez une fonction nommée «fusionnaire«Ayant les paramètres indiqués pour les tableaux gauche et droit, le tableau d'origine et les tailles des tableaux gauche et droit, respectivement.
    • Dans la définition de la fonction, initialisez les valeurs déclarées pour appliquer une condition plus tard dans le code.
    • Dans l'étape suivante, appliquez le combiné "alors que"Loop et"si»Condition pour vérifier la condition de fusion.
    • Il est tel que si l'élément du tableau gauche est plus petit que celui de l'élément de tableau droit à un index particulier, le tableau fusionné est ajouté avec l'élément de tableau gauche commençant de gauche à droite.
    • Dans l'autre cas, l'élément de tableau droit est ajouté.
    • Après cela, appliquez le «alors que”Boucle pour vérifier si seuls les éléments du tableau gauche ou droit sont laissés et ajoutez-les au tableau en conséquence.

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:

    • Définir la fonction "dividearray ()”Avoir les paramètres pointant vers le tableau passé et sa longueur.
    • Maintenant, vérifiez la condition de telle sorte que la durée du tableau n'est pas supérieure à «2". Si c'est le cas, retournez le tableau tel qu'il est. Sinon, exécutez les fonctionnalités supplémentaires.
    • Après cela, divisez le tableau en deux moitiés égales via sa longueur (tableau) passée.
    • À l'étape suivante, créez deux tableaux entiers basés sur la longueur divisée du tableau passé.
    • Maintenant, ajoutez les tableaux partagés gauche et droit avec les éléments de tableau passé.
    • Enfin, invoquez cette fonction récursivement sur ces deux tableaux divisés qui accumulent les données copiées du tableau passé d'origine et accédez au «accéder au«MergedArray ()”Fonction qui compare et trie les tableaux gauche et droit.

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:

    • Déclarer un tableau nommé «MergesortArray"Cela doit être trié.
    • Dans l'étape suivante, invoquez la fonction "dividearray ()«En passant le tableau déclaré et sa longueur via le«longueur»Propriété, comme ses arguments, respectivement.
    • Après cela, parcourez le tableau et affichez les éléments de tableau triés via le «pour" boucle.
    • Algorithme: Le tableau fourni sera transmis à la fonction "dividearray ()"Cela divise le tableau et cette fonction invoque ensuite la fonction"MergedArray ()«Cela fusionne les tableaux divisés en fonction des éléments contenus.

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.