Merge -Sortierung ist ein effektiver Sortieralgorithmus, der auf dem Zusammenführungsbetrieb basiert. Dieser Algorithmus ist eine sehr typische Anwendung von Kluft und Eroberung.
Zusammenführende Sortiermethode besteht darin, zwei (oder mehr als zwei) geordnete Tabellen in eine neue geordnete Tabelle zusammenzuführen, dh die zu sortierte Sequenz in mehrere Subsequenzen, jede Subsequenz wird geordnet. Dann werden die geordneten Untersequenzen in die geordnete Sequenz kombiniert.
Die Zusammenführungssortierung ist ein effektiver Sortieralgorithmus, der auf dem Zusammenführungsbetrieb basiert. Dieser Algorithmus ist eine sehr typische Anwendung von Kluft und Eroberung. Fusionieren Sie die geordneten Untersequenzen, um eine vollständig geordnete Sequenz zu erhalten. Wenn zwei bestellte Tische in eine bestellte Tabelle verschmolzen werden, wird dieser 2-Wege-Zusammenschluss bezeichnet.
Der Zusammenführungsprozess ist wie folgt:
1. Beantragen Sie Platz so, dass seine Größe die Summe von zwei sortierten Sequenzen ist, mit denen die fusionierten Sequenzen gespeichert werden
2. Setzen Sie zwei Zeiger, die anfängliche Position ist die Ausgangsposition der beiden sortierten Sequenzen
3. Vergleichen
4. Wiederholen Sie Schritt 3, bis ein Zeiger das Ende der Sequenz erreicht
5. Kopieren Sie alle verbleibenden Elemente einer anderen Sequenz direkt bis zum Ende der Zusammenführungssequenz
Beispiel 1:
Die Codekopie lautet wie folgt:
/**
* Zusammenführen, auch als Merge -Algorithmus bekannt, bezieht sich auf den Betrieb von zwei sortierten Sequenzen in eine Sequenz.
* Der Zusammenführungssortieralgorithmus hängt vom Zusammenführungsvorgang ab.
*
* Der Vorgang des Zusammenführungsbetriebs lautet wie folgt:
*
* 1. Bewerben Sie sich für Platz, damit seine Größe die Summe von zwei sortierten Sequenzen ist, mit denen die fusionierten Sequenzen gespeichert werden können
* 2. Setzen Sie zwei Zeiger, die Anfangspositionen sind die Ausgangspositionen der beiden sortierten Sequenzen
* 3.. Vergleichen Sie die Elemente, auf die die beiden Zeiger vermittelt werden, wählen Sie relativ kleine Elemente und setzen Sie sie in den Zusammenführungsraum und bewegen Sie den Zeiger in die nächste Position
* 4. Wiederholen Sie Schritt 3, bis ein Zeiger das Ende der Sequenz erreicht
* 5. Kopieren Sie alle verbleibenden Elemente einer anderen Sequenz direkt bis zum Ende der zusammengeführten Sequenz
*
*/
Funktion mergesort (Elemente) {
if (items.length <2) {
Gegenstände zurückgeben;
}
var Middle = math.floor (items.length / 2),
links = items.lice (0, Mitte),,
Right = items.lice (Mitte),,
params = merge (mergesort (links), mergesort (rechts));
params.unshift (0, items.length);
items.spleplice.apply (Elemente, Parames);
Gegenstände zurückgeben;
Funktion merge (links, rechts) {
var result = [],
il = 0,
ir = 0;
while (il <links.length && ir <rechts.length) {
if (links [il] <rechts [ir]) {
result.push (links [IL ++]);
} anders {
result.push (rechts [ir ++]);
}
}
return ergebnis.concat (links.slice (il)) .concat (rechts.slice (ir));
}
}
// prüfen
var arr = [2, 1, 3, 12, 5, 66, 23, 87, 15, 32];
mergesort (arr);
Beispiel 2:
Die Codekopie lautet wie folgt:
<script type = "text/javaScript">
//document.write("-------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------
// var array = new Array (12, 25, 32, 16, 18, 27, 59, 69, 36);
var count = 0;
// Rufen Sie die Sortiermethode an, um sie zu sortieren
// mutort (Array, Array, 0, Array.length - 1);
// Quell -Quell -Array
// Ziel -Ziel -Array
// s starten einschreibend
// ttarget einschreibend
Funktionsfunktion (Quelle, dest, s, t) {
var result = "";
var m; // Nehmen Sie den Zwischenwert
var dest2 = new Array ();
if (s == t) {
dest [s] = Quelle [s];
}
anders {
m = math.floor ((s + t) / 2);
mutesort (Quelle, dest2, s, m);
multus (Quelle, dest2, m+1, t);
merge (dest2, dest, s, m, t);
/* Ausgabeergebnis*/
Ergebnis += "<br /> Thread" +++ Count +"Das Ergebnis der Bestellung durch den Pass ist:";
für (var n = 0; n <dest.length; n ++) {
Ergebnis + = Array [n] + ",";
}
/* Das Ausgabeergebnis endet*/
}
Rückgabeergebnis;
}
/* Das Ausgabeergebnis endet*/
// zwei Arrays von klein bis groß verschmolzen
// Quelle Original Array
// Dest Sorted Array
// Sthe erstes Index
// m die folgende Tabelle des zweiten Arrays
// Ntotale Länge
Funktion merge (Quelle, dest, s, m, n) {
für (var j = m+1, k = s; j <= n && s <= m; k ++) {
if (Quelle [s] <Quelle [j]) {
dest [k] = Quelle [s ++];
}
anders {
dest [k] = source [j ++];
}
}
// Fügen Sie die verbleibenden bestellten Arrays am Ende des Ziels hinzu
if (s <= m) {
für (var l = 0; l <= m - s; l ++) {
dest [k + l] = Quelle [s + l];
}
}
if (j <= n) {
für (var l = 0; l <= n - j; l ++) {
dest [k + l] = Quelle [j + l];
}
}
}
//document.write("<br /> <br /> "))
</script>