In diesem Artikel lernen wir einen Zusammenführungs -Sort -Algorithmus kennen. Merge-Sort. Zusammenführende Sortierung wird aufgrund seiner Geschwindigkeit bei der Sortierung von Daten häufig verwendet. Es ist eine der besseren Illustrationen, wie Algorithmen teilnehmen und erobern können, die in der Praxis verwendet werden können. Zusammenführende Sortierung trennt eine Liste von Daten in zwei Hälften und ruft dann diese Unterabschnitt auf, um sie weiter in zwei Hälften zu unterteilen. Es wiederholt den Vorgang, bis jede Listenkomponente nur ein Element hat. Durch Sortieren dieser Unterabteilungen eines Elements in zwei Komponenten wird sie später zusammen verschmelzen. Nach dem Sortieren wird der Unterabschnitt mit zwei Elementen mit den beiden anderen Komponenten verknüpft. Dieser Vorgang wird wiederholt, bis die endgültige sortierte Liste der Elemente erhalten wird, indem die Funktion wiederholt aufgerufen wird.
Die grundlegende Abbildung der Zusammenführungsart ist im folgenden Beispiel angegeben:
Python -Code: Der folgende Python -Code ist für den Merge -Sortieralgorithmus:
Def merge_sort (ungesortete Liste):
Wenn Len (Unortedlist)> 1:
MID = LEN (ungesortete Liste) // 2
linke list = ungesortedlist [: Mid]
rightlist = ungesortierte Liste [Mid:]
# Rekursive Anruf, wenn wir zwei Liste (links und rechts) zum Sortieren gehen
merge_sort (linke Liste)
merge_sort (rechte Liste)
# Weil wir zwei Listen haben, müssen wir Iteratoren für die Iteration jeder Liste benötigen
M = 0
n = 0
# Wir brauchen einen gemeinsamen Iterator, der die Hauptliste iteriert
z = 0
während m < len(leftList) and n < len(rightList):
Wenn linke Liste [m] <= rightList[n]:
# Hier verwenden wir die ersten Elemente der linken Seite
UnsortedList [z] = linke Liste [m]
# Inkrementieren Sie den Haupt -Iterator
m += 1
anders:
UnsortedList [z] = RightList [n]
n += 1
z += 1
# Wenn Werte in der Liste gelassen werden, verarbeiten wir hier
während m < len(leftList):
UnsortedList [z] = linke Liste [m]
m += 1
z += 1
während n < len(rightList):
UnsortedList [z] = RightList [n]
n += 1
z += 1
UnsortedList = [23,56,0,23,85,100,200,12,32,78,90,102]
merge_sort (ungesortierte Liste)
drucken (ungeortierte Liste)
Ausgang:
[0, 12, 23, 23, 32, 56, 78, 85, 90, 100, 102, 200]
Dies ist die rekursive Methode zur Zusammenführung der Sortier -Implementierung. Hier sind die folgenden Schritte, um das sortierte Array mit dieser Methode zu erhalten:
- Linie 1: Wir definieren eine Funktion (merge_sort), wenn wir eine Liste der unsortierten Elemente sortieren müssen. Jetzt werden wir alle Zeilen dieser Merge_Sort -Funktion erklären.
- Zeile 2-5: Das erste, was wir überprüfen, ist, ob die unsortierten Listenelemente mehr als 1 Element haben oder nicht. Wenn es nur ein einzelnes Element gibt, besteht keine Notwendigkeit zu sortieren. Wir überprüfen also diesen ersten Zustand.
Wenn die Elemente mehr als 1 sind, versuchen wir, den Medianwert der Liste zu erhalten, um die gesamte Liste in zwei Teile (links und rechts) zu unterteilen. Jeder rekursive Anruf unterteilt die Liste in links und rechts, bis zwei benachbarte Einträge erfasst werden.
- Zeile 8-9: Wir nennen die Zusammenführungssortierung für jeden Sublisten (links und rechts) rekursiv.
- Zeile 11-15: Das Sortiervorgang beginnt jetzt. Jeder ruft zwei Teile auf, die von den M- und N -Iteratoren durchquert werden. Der Z -Iterator iteriert alle Listen und macht Änderungen vor.
- Zeile 17-26: Die linke Liste [m] wird dem ungesortierten Steckplatz [z] zugeteilt, und M werden erhöht, wenn der Wert bei m kleiner als der Wert bei n ist. Wenn nicht, wird RightList [n] ausgewählt. Alle an Z zugewiesenen Werte sind alle sortiert.
- Zeile 29-37: Am Ende dieser Schleife war einer der Teile möglicherweise nicht vollständig überquert worden. Der Inhalt wird den verbleibenden Positionen auf der Liste zugewiesen.
Zeitkomplexität:
Die zeitliche Komplexität der Zusammenführung hängt von zwei Faktoren ab:
- Der List -Split -Faktor, der Protokoll (n) benötigt
- Der zweite Faktor fusioniert die beiden Liste, die die lineare Zeit in Anspruch nimmt, so dass seine Komplexität O (N) ist
Somit basiert die Gesamtkomplexität auf den beiden vorherigen Faktoren der Zusammenführungssorte o (n.Protokoll).
Vorteile des Merge -Sortieralgorithmus:
- Merge -Sortierung macht es einfach, Big Data -Sets zu sortieren.
- Die Zusammenführungssortierung kann in der Reihenfolge auf Daten zugreifen, sodass zufälliger Zugriff nicht erforderlich ist.
- Merge -Sortierung ist eine zuverlässige Sortiermethode.
Nachteile des Zusammenführungssortalgorithmus:
- Die Zusammenführungssortierung erfordert ein ähnliches Array der Größe, um die Liste zu sortieren. Dies ist ein Nachteil der Speicherverwendung.
- Beim Sortieren kleinerer Datensätze dauert es länger.
Abschluss:
Die Zusammenführung der Sortierung ist eine schnelle und vielseitige Sortiermethode. Der Hauptvorteil ist der konsequente Laufzeit und Effizienz des Algorithmus, während große Arrays sortiert werden. Im Vergleich zur schnellen Sorte beruht es nicht auf fehlerhafte Urteile, die zu langen Laufzeiten führen. Die Zusammenführungsart ist der beste Algorithmus, um die Elemente zu sortieren. Der Hauptnachteil der Zusammenführungsart ist jedoch, dass sie viel Speicher verwendet, bevor sie die Elemente verschmelzen. Es ist auch sehr nützlich für zukünftige Software-Engineering, bei der sie mehr Sortieralgorithmen basierend auf der Divide-and-Conquer-Methode erstellen können.
Wir haben das Standardbeispiel für die Zusammenführungsart gesehen, ohne zuerst zu kodieren, um zu verstehen, wie diese Analogie funktioniert, und dann ähnliche Schritte in der Python -Programmierung implementiert. Jetzt sind wir uns der Kluft und der Eroberung der Zusammenführungsart bewusst. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Informationen finden Sie unter Linux Tipp.