Fusionner le tri dans JavaScript

Fusionner le tri dans JavaScript
Fusiter le tri divise la liste complète en sublilistes ou en sublilistes «n» et il continue ce processus récursivement jusqu'à ce que chaque sous-liste ait un élément. Une fois ce processus «diviser et conquérir» terminé, il commence à fusionner chaque sous-liste pour créer une liste triée.

Comment fonctionne la fusion

Maintenant, nous comprendrons le fonctionnement de la fusion à l'aide d'un exemple:

Voyons un autre exemple pour la fusion où nous avons un total de sept éléments (impairs) dans un tableau et nous les trierons par ordre croissant:

[5, 7, 1, 4, 6, 3, 2]

Divisez le tableau en deux sous-terrains

[5, 7, 1] et [4, 6, 3, 2]

Encore une fois, chaque tableau sera divisé en deux sous-réseaux

[5], [7, 1] et [4, 6], [3, 2]

Ici, sur quatre sous-terrains, un sous-tableau n'a qu'un seul élément mais les trois autres tableaux ont encore plus d'un élément, nous diviserons donc chacun de ces tableaux en deux tableaux.

[5], [7], [1], [4], [6], [3], [2]

Maintenant, la première étape est complète car chaque tableau n'a qu'un seul élément dedans. Maintenant, nous allons comparer les éléments du tableau et fusionner ces tableaux d'articles uniques en paires.

[5, 7], [1, 4], [3, 6], [2]

Nous faisons une comparaison entre les éléments du tableau des deux premiers tableaux et les deux derniers tableaux et déplaçons les valeurs plus petites vers le côté gauche et les valeurs plus grandes vers le côté droit.

Une comparaison entre les éléments des deux premiers tableaux et les deux seconds des tableaux seront effectués. Par exemple, les deux premiers tableaux sont [5,7] et [1,4]. 5 sera d'abord comparé à 1 puis à 4. Ensuite, le deuxième élément qui est 7 subira la même procédure et le tableau résultant sera [1,4,5,7]. Nous allons maintenant traiter avec les deux derniers tableaux qui sont [3,6] et [2]. Après la comparaison, le tableau que nous obtenons sera [2,3,6].

[1, 4, 5, 7] [2, 3, 6]

Nous avons maintenant deux tableaux; [1,4,5,7] et [2,3,6]. Appelons-les Arraya [1,4,5,7] et Arrayb [2,3,6] respectivement.

Tout d'abord, le premier élément «1" de arraya sera comparé au deuxième élément "2" de arrayb Et le plus petit nombre "1"Sera stocké dans le nouveau tableau trié

[1]

Dans la prochaine itération, "2"Sera comparé à l'élément suivant"4" de arraya. Le plus petit "2"Sera stocké dans le nouveau tableau trié.

[1,2]

Cette fois, «4» de Arraya sera comparé à l'élément suivant «3» de ArrayB. Car «3» est plus petit, il sera inséré dans le nouveau tableau trié.

[1,2,3]

Cette procédure sera effectuée à chaque élément des deux tableaux et une fois tous les éléments comparés, le tableau résultant sera; [1,2,3,4,5,6,7].

[1, 2, 3, 4, 5, 6, 7]

Fusionner le tri dans JavaScript

Comme nous avons appris comment la fusion fonctionne maintenant, nous le coderons en javascript.

Créez une fonction récursive pour diviser le tableau non trié, nous l'avons nommé «tri par fusion". La fonction récursive a toujours un cas de base pour arrêter le programme. Nous passons le tableau non trié au «tri par fusion”Fonction, et à l'intérieur de cette fonction, nous trouvons l'index central du tableau en divisant la longueur du tableau par 2. De plus, nous utilisons la méthode «Splice ()» pour diviser le tableau en sous-arrayons.

fonction fusion_sort (unsedArray)
const Midle_index = non sortedArray.longueur / 2
si (non sortant.longueur < 2)
retour non sortant

const cellaRray = non sortant.Splice (0, Midle_index)
return MergeArray (Merge_Sort (LeftArray), Merge_Sort (UndetedArray))

Maintenant, nous allons discuter du code pour fusionner les deux tableaux de fractionnement. Ces tableaux de fractionnement sont déjà triés dans la fonction «Merge_Sort», et maintenant nous les fusionnant dans le «fusion" fonction.

fonction Fonction MergeArrays (LeftArray, RightArray)
Soit Ary = []
Pendant que (gauche.Longueur && droite.longueur)
if (LeftArray [0] < rightArray[0])
ary.pousser (gauche.changement())
autre
ary.Push (droite.changement())


retour [… ary,… gauche,… droite]

Dans la fonction ci-dessus, «LeftarRay» et «RightArray» se trouvent les deux tableaux triés et nous les fusionnons pour obtenir un seul tableau trié. Deux méthodes sont utilisées dans cet exemple: le «pousser()”Méthode pour ajouter la valeur à la fin du tableau trié et le"changement()”Méthode pour supprimer la valeur sélectionnée dans la sous-table. Enfin, la console.La méthode log () est utilisée pour tester la sortie.

L'extrait de code complet irait comme ceci:

fonction Fonction MergeArrays (LeftArray, RightArray)
Soit Ary = []
Pendant que (gauche.Longueur && droite.longueur)
if (LeftArray [0] < rightArray[0])
ary.pousser (gauche.changement())
autre
ary.Push (droite.changement())


retour [… ary,… gauche,… droite]

fonction fusion_sort (unsedArray)
const Midle_index = non sortedArray.longueur / 2
si (non sortant.longueur < 2)
retour non sortant

const cellaRray = non sortant.Splice (0, Midle_index)
return MergeArrays (Merge_sort (LeftArray), Merge_Sort (UndetedArray))

non sortant = [5, 7, 1, 4, 6, 3, 2];
console.log (merge_sort (unsedArray));

Sortir:

Conclusion:

Fusiter le tri divise une liste en sous-listes, et il continue de diviser la liste jusqu'à ce qu'une sous-liste obtienne un seul élément, puis il fusionne tous les sous-listes et produit une nouvelle liste triée. Dans cet article, nous avons appris le concept de sort de fusion, nous avons ensuite envisagé quelques exemples, et enfin, nous les avons mis en œuvre en JavaScript. Nous avons également expliqué comment fonctionne la méthode d'épissage, la méthode push et le décalage dans JavaScript.