Sortierung in JavaScript zusammenführen

Sortierung in JavaScript zusammenführen
Zusammenführen Sortieren unterteilt die vollständige Liste in Sublisten oder in „N“ -Ververminderungen und setzt diesen Prozess rekursiv fort, bis jede Unterliste ein Element hat. Sobald dieser Prozess „Teilung und Eroberung“ abgeschlossen ist.

Wie funktioniert die Zusammenführung

Jetzt werden wir die Arbeit der Zusammenführung mit Hilfe eines Beispiels verstehen:

Betrachten wir ein weiteres Beispiel für die Zusammenführungsart, in der wir insgesamt sieben (ungerade) Elemente in einem Array haben, und wir werden sie in aufsteigender Reihenfolge sortieren:

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

Teilen Sie das Array in zwei Unterarrays auf

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

Wieder wird jedes Array in zwei Subtarrays unterteilt

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

Hier von vier Sub-Arrays hat ein Sub-Array nur ein Element, aber die anderen drei Arrays haben immer noch mehr als ein Element, sodass wir jeden dieser Arrays weiter in zwei Arrays teilen werden.

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

Jetzt ist der erste Schritt abgeschlossen, da jedes Array nur einen Artikel enthält. Jetzt werden wir die Array -Elemente vergleichen und diese Einzelelementen -Arrays in Paare zusammenführen.

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

Wir führen einen Vergleich zwischen den Array -Elementen der ersten beiden Arrays und den letzten beiden Arrays durch und verschieben die kleineren Werte auf die linke Seite und größere Werte auf die rechte Seite.

Ein Vergleich zwischen den Elementen der ersten beiden Arrays und der zweiten beiden Arrays wird durchgeführt. Zum Beispiel sind die ersten beiden Arrays [5,7] und [1,4]. 5 wird zuerst mit 1 und dann mit 4 verglichen. Danach wird das zweite Element, das 7 ist, das gleiche Verfahren und das resultierende Array wird [1,4,5,7] sein. Jetzt werden wir uns mit den letzten beiden Arrays befassen, die [3,6] und [2] sind. Nach dem Vergleich des Arrays, das wir erhalten, wird [2,3,6] sein.

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

Jetzt haben wir zwei Arrays; [1,4,5,7] und [2,3,6]. Nennen wir sie Arraya [1,4,5,7] Und Arrayb [2,3,6] bzw.

Zunächst das erste Element “1" von Arraya wird mit dem zweiten Element verglichen “2" von Arrayb und die kleinere Zahl “1”Wird im neuen sortierten Array aufbewahrt

[1]

In der nächsten Iteration, “2"Wird mit dem nächsten Element verglichen"4" von Arraya. Der kleinere “2”Wird im neuen sortierten Array aufbewahrt.

[1,2]

Diesmal wird „4“ von Arraya mit dem nächsten Element „3“ von Arrayb verglichen. Da "3" kleiner ist, wird es also in das neue sortierte Array eingefügt.

[1,2,3]

Dieses Verfahren wird für jedes Element beider Arrays durchgeführt und sobald alle Elemente verglichen werden, wird das resultierende Array sein. [1,2,3,4,5,6,7].

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

Sortierung in JavaScript zusammenführen

Während wir gelernt haben, wie die Sortierung der Merge jetzt funktioniert, werden wir es in JavaScript codieren.

Erstellen Sie eine rekursive Funktion, um das unsortierte Array zu teilen, wir haben es benannt. “Zusammenführen, sortieren”. Die rekursive Funktion hat immer einen Basisfall, um das Programm zu stoppen. Wir übergeben das unsortierte Array an die “Zusammenführen, sortierenDie Funktion und in dieser Funktion finden wir den mittleren Index des Arrays, indem wir die Länge des Arrays durch 2 teilen. Darüber hinaus verwenden wir die Methode „Splice ()“, um das Array in Unterarrays aufzuteilen.

Funktion merge_sort (ungortedArray)
const midle_index = ungortedArray.Länge / 2
if (ungortedarray.Länge < 2)
Rückkehr ungortiertarray

const LeftArray = ungorientiert.Spleiß (0, Midle_index)
Mergearray zurückgeben (merge_sort (LeftArray), merge_sort (ungortedArray))

Jetzt werden wir den Code diskutieren, um die beiden Spaltarrays zusammenzuführen. Diese Spaltarrays sind bereits in der Funktion "merge_sort" sortiert, und jetzt verschmelzen wir sie in ""Mergearrays”Funktion.

Funktion mergearrays (LeftArray, RightArray)
Sei Ary = []
während (linksarray.Länge && RightArray.Länge)
if (LeftArray [0] < rightArray[0])
Ary.Push (LeftArray.Schicht())
anders
Ary.Push (RightArray.Schicht())


Rückkehr [… Ary,… LeftArray,… RightArray]

In der oben gegebenen Funktion "LeftArray" und "RightArray" befinden sich die beiden sortierten Arrays, und wir verschmelzen sie, um ein einzelnes sortiertes Array zu erhalten. In diesem Beispiel werden zwei Methoden verwendet: die “drücken()Methode, um den Wert am Ende des sortierten Arrays und der “hinzuzufügen“Schicht()Methode zum Löschen des Wertes, der aus dem Sub-Array ausgewählt wird. Schließlich die Konsole.Log () -Methode wird verwendet, um den Ausgang zu testen.

Der komplette Code -Snippet würde so laufen:

Funktion mergearrays (LeftArray, RightArray)
Sei Ary = []
während (linksarray.Länge && RightArray.Länge)
if (LeftArray [0] < rightArray[0])
Ary.Push (LeftArray.Schicht())
anders
Ary.Push (RightArray.Schicht())


Rückkehr [… Ary,… LeftArray,… RightArray]

Funktion merge_sort (ungortedArray)
const midle_index = ungortedArray.Länge / 2
if (ungortedarray.Länge < 2)
Rückkehr ungortiertarray

const LeftArray = ungorientiert.Spleiß (0, Midle_index)
Mergearrays zurückgeben (merge_sort (LeftArray), merge_sort (ungesortedArray))

ungortedArray = [5, 7, 1, 4, 6, 3, 2];
Konsole.log (merge_sort (ungortedArray));

Ausgang:

Abschluss:

Merge-Sortierung teilt eine Liste in Unterlisten auf und teil. In diesem Beitrag haben wir das Konzept der Zusammenführungsart gelernt, dann einige Beispiele in Betracht gezogen, und schließlich haben wir sie in JavaScript implementiert. Wir haben auch erklärt, wie die Spleißmethode, die Push -Methode und die Verschiebungsmethode in JavaScript funktioniert.