


In unseren vorherigen Artikeln haben wir eine ganze Reihe von Sortieralgorithmen wie Bubble Sort, Selection Sort und Insertion Sort kennengelernt. Wir haben gelernt, dass diese Sortieralgorithmen zwar sehr einfach zu implementieren sind, für große Datensätze jedoch nicht effizient sind, was bedeutet, dass wir einen effizienteren Algorithmus für die Sortierung großer Datensätze und damit für die Zusammenführungssortierung benötigen. In dieser Serie gehen wir darauf ein, wie die Zusammenführungssortierung funktioniert und wie sie in JavaScript implementiert werden kann. Bist du bereit?
Inhaltsverzeichnis
- Was ist der Zusammenführungssortierungsalgorithmus?
-
So funktionieren Zusammenführungssortierungsalgorithmen
- Zeitkomplexität
- Weltraumkomplexität
- Implementierung in JavaScript
- Fazit
Was ist der Merge-Sort-Algorithmus?
Merge Sort Algorithm ist ein ausgezeichneter Sortieralgorithmus, der dem Divide-and-Conquer-Prinzip folgt. Im Gegensatz zu einfacheren Algorithmen wie Selection Sort und Bubble Sort, die mehrere Durchgänge durch das Array durchführen und benachbarte Elemente vergleichen, verfolgt Merge Sort einen strategischeren Ansatz:
- Teilen: Zuerst teilt Merge Sort das Array in zwei Hälften
- Erobern: Zweitens wird jede Hälfte rekursiv sortiert
- Kombinieren: Zum Schluss werden die sortierten Hälften wieder zusammengefügt
Dieser Ansatz übertrifft durchweg einfachere O(n²)-Algorithmen wie Selection Sort und Bubble Sort, wenn es um größere Datensätze geht.
So funktionieren Zusammenführungssortierungsalgorithmen
Wir haben gesehen, dass die Zusammenführungssortierung mithilfe des beliebten Divide-and-Conquer-Ansatzes funktioniert. Unten finden Sie eine visuelle Darstellung der Funktionsweise.
Da wir nun die Magie gesehen haben, gehen wir durch die Funktionsweise des Merge-Sort-Algorithmus, indem wir dieses Array manuell sortieren: [38, 27, 43, 3, 9, 82, 10] mit dem oben genannten Ansatz.
Schritt 1: Teilen
Der erste Schritt bei der Zusammenführungssortierung besteht darin, das Array in Unterarrays zu unterteilen und dann jedes Unterarray in Unterarrays und das Unterarray in Unterarrays zu unterteilen, bis in allen Unterarrays nur noch ein Element übrig ist.
Schritt 2: Zurückverschmelzen (Erobern)
Der zweite Schritt besteht darin, mit dem Sortieren dieser Subarrays von Grund auf zu beginnen.
Zeitkomplexität
Merge Sort erreicht in allen Fällen (beste, mittlere und schlechteste) Zeitkomplexität von O(n log n) und ist damit für größere Datensätze effizienter als O(n²)-Algorithmen.
Hier ist der Grund:
- Dividieren: Das Array wird logarithmisch n-mal geteilt (jede Division halbiert die Größe)
- Zusammenführen: Jede Zusammenführungsebene erfordert n Operationen
- Gesamt: n Operationen × log n Ebenen = O(n log n)
Vergleichen Sie dies mit:
- Blasensortierung: O(n²)
- Auswahlsortierung: O(n²)
- Zusammenführungssortierung: O(n log n)
Für ein Array von 1.000 Elementen:
- O(n²) ≈ 1.000.000 Operationen
- O(n log n) ≈ 10.000 Operationen
Weltraumkomplexität
Merge Sort erfordert O(n) zusätzlichen Speicherplatz, um die temporären Arrays während des Zusammenführens zu speichern. Dies ist zwar mehr als der von Bubble Sort oder Selection Sort benötigte O(1)-Platz, aber die Zeiteffizienz macht diesen Kompromiss in der Praxis normalerweise lohnenswert.
Implementierung in JavaScript
// The Merge Helper Function function merge(left, right) { const result = []; let leftIndex = 0; let rightIndex = 0; while (leftIndex <h4> Aufschlüsselung der Zusammenführungsfunktion: </h4> <ol> <li> <strong>Funktionseinrichtung</strong>: </li> </ol> <pre class="brush:php;toolbar:false"> const result = []; let leftIndex = 0; let rightIndex = 0;
- Erstellt ein leeres Array zum Speichern zusammengeführter Ergebnisse
- Initialisiert Zeiger für beide Eingabearrays
- Stellen Sie sich diese Zeiger wie Finger vor, die verfolgen, wo wir uns in jedem Array befinden
- Hauptzusammenführungslogik:
while (leftIndex
- Vergleicht Elemente aus beiden Arrays
- Nimmt das kleinere Element und fügt es dem Ergebnis hinzu
- Bewegt den Zeiger in dem Array, aus dem wir entnommen haben, vorwärts
- Als würde man beim Sortieren eines Stapels die kleinere von zwei Karten wählen
- Aufräumphase:
while (leftIndex
- Fügt alle verbleibenden Elemente hinzu
- Notwendig, da ein Array möglicherweise länger ist als das andere
- Als würde man die restlichen Karten nach dem Vergleich einsammeln
Die Hauptfunktion zum Zusammenführen und Sortieren
function mergeSort(arr) { // Base case if (arr.length <h4> MergeSort aufschlüsseln: </h4> <ol> <li> <strong>Basisfall</strong>: </li> </ol> <pre class="brush:php;toolbar:false"> if (arr.length
- Verarbeitet Arrays der Länge 0 oder 1
- Diese sind bereits nach Definition sortiert
- Dient als unser Rekursionsstopppunkt
- Teilungsphase:
const middle = Math.floor(arr.length / 2); const left = arr.slice(0, middle); const right = arr.slice(middle);
- Teilt das Array in zwei Hälften
- Slice() erstellt neue Arrays, ohne das Original zu ändern
- Als würde man ein Kartenspiel in zwei Hälften schneiden
- Rekursives Sortieren und Zusammenführen:
return merge(mergeSort(left), mergeSort(right));
- Sortiert jede Hälfte rekursiv
- Kombiniert sortierte Hälften mithilfe der Zusammenführungsfunktion
- Zum Beispiel kleinere Kartenstapel zu sortieren, bevor man sie kombiniert
Beispiel-Komplettlösung
Mal sehen, wie es sortiert wird [38, 27, 43, 3]:
- Erster Split:
// The Merge Helper Function function merge(left, right) { const result = []; let leftIndex = 0; let rightIndex = 0; while (leftIndex <ol> <li>Zweiter Split: </li> </ol> <pre class="brush:php;toolbar:false"> const result = []; let leftIndex = 0; let rightIndex = 0;
- Zurück zusammenführen:
while (leftIndex <h2> Abschluss </h2> <p>Merge Sort zeichnet sich durch einen hocheffizienten Sortieralgorithmus aus, der bei großen Datensätzen stets eine gute Leistung erbringt. Obwohl es im Vergleich zu einfacheren Sortieralgorithmen zusätzlichen Platz benötigt, ist es aufgrund seiner O(n log n)-Zeitkomplexität eine erste Wahl für viele reale Anwendungen, bei denen die Leistung entscheidend ist.</p> <p>Wichtige Erkenntnisse:</p>
- Verwendet die Divide-and-Conquer-Strategie
- O(n log n) Zeitkomplexität in allen Fällen
- Benötigt O(n) zusätzlichen Platz
- Stabiler Sortieralgorithmus
- Hervorragend geeignet für große Datensätze
Bleiben Sie auf dem Laufenden und verbunden
Um sicherzustellen, dass Sie keinen Teil dieser Serie verpassen und um mit mir in Kontakt zu treten, um mehr darüber zu erfahren
Diskussionen über Softwareentwicklung (Web, Server, Mobil oder Scraping/Automatisierung), Daten
Strukturen und Algorithmen und andere spannende Technologiethemen, folgen Sie mir auf:

Emmanuel Ayinde
- GitHub
- X (Twitter)
Bleiben Sie dran und viel Spaß beim Programmieren ???
Das obige ist der detaillierte Inhalt vonMerge-Sortieralgorithmus verstehen: Anfängerleitfaden zur Beherrschung des Sortieralgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Dieses Tutorial zeigt Ihnen, wie Sie eine benutzerdefinierte Google -Such -API in Ihr Blog oder Ihre Website integrieren und ein raffinierteres Sucherlebnis bieten als Standard -WordPress -Themen -Suchfunktionen. Es ist überraschend einfach! Sie können die Suche auf y beschränken

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

Diese Artikelserie wurde Mitte 2017 mit aktuellen Informationen und neuen Beispielen umgeschrieben. In diesem JSON -Beispiel werden wir uns ansehen, wie wir einfache Werte in einer Datei mit JSON -Format speichern können. Mit der Notation des Schlüsselwertpaares können wir jede Art speichern

Verbessern Sie Ihre Codepräsentation: 10 Syntax -Hochlichter für Entwickler Das Teilen von Code -Snippets auf Ihrer Website oder Ihrem Blog ist eine gängige Praxis für Entwickler. Die Auswahl des richtigen Syntax -Highlighter kann die Lesbarkeit und die visuelle Anziehungskraft erheblich verbessern. T

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Dieser Artikel enthält eine kuratierte Auswahl von über 10 Tutorials zu JavaScript- und JQuery Model-View-Controller-Frameworks (MVC). Diese Tutorials decken eine Reihe von Themen von Foundatio ab

Kernpunkte Dies in JavaScript bezieht sich normalerweise auf ein Objekt, das die Methode "besitzt", aber es hängt davon ab, wie die Funktion aufgerufen wird. Wenn es kein aktuelles Objekt gibt, bezieht sich dies auf das globale Objekt. In einem Webbrowser wird es durch Fenster dargestellt. Wenn Sie eine Funktion aufrufen, wird das globale Objekt beibehalten. Sie können den Kontext mithilfe von Methoden wie CALL (), Apply () und Bind () ändern. Diese Methoden rufen die Funktion mit dem angegebenen Wert und den Parametern auf. JavaScript ist eine hervorragende Programmiersprache. Vor ein paar Jahren war dieser Satz


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version
