Implementieren der Zusammenführungssortierung in C ++ mit Beispielen

Dieser Artikel vermittelt Ihnen detaillierte Informationen zu Merge Sort in C ++ und zeigt, wie es mit Beispielen funktioniert.

Was ist die Zusammenführungssorte? Die Zusammenführungssortierung ist ein vergleichsbasierter Sortieralgorithmus, der zur Kategorie Teilen und Erobern gehört. Die Zusammenführungssortierung wird verwendet, um ein Array basierend auf der Divide and Conquer-Strategie zu sortieren, die in diesem Beitrag zusammen mit anderen Konzepten wie dem Algorithmus anhand eines Beispiels kurz behandelt wird. Wir werden auch die zeitliche Komplexität der Zusammenführungssortierung in C ++ untersuchen

Die folgenden Hinweise werden in diesem Artikel behandelt:



Fahren Sie mit diesem Artikel über Zusammenführungssortierung in C ++ fort

Divide and Conquer-Algorithmus

Wenn Sie bereits mit der Funktionsweise von Quicksort vertraut sind, kennen Sie möglicherweise die Strategie der Teilung und Eroberung. Teilen und Erobern umfasst drei Hauptschritte. Um diese Schritte zu verstehen, betrachten wir ein Array Hello [] mit dem Startindex 'a' und dem Endindex 'n'. Daher können wir unser Array folgendermaßen schreiben: Hello [a & hellip..n]

Teilen - Der Hauptzug oder der Hauptschritt des Teilens und Eroberens besteht darin, das gegebene Problem in Unterprobleme oder Unterteile zu unterteilen. Der Haken dabei ist, dass die Unterprobleme dem ursprünglichen Problem ähnlich und kleiner sein sollten. In unserem Fall teilen wir unser Array in zwei Hälften [a & hellip.m] [m + 1 & hellip..n] m liegt in der Mitte von a und n Index

Erobern - Sobald wir fertig sind, teilen wir unser Problem in Unterprobleme. Wir lösen diese Teilprobleme rekursiv.

Kombinieren - In diesem Schritt kombinieren wir alle Lösungen unserer Unterprobleme auf geeignete Weise. Mit anderen Worten, wir kombinieren zwei verschiedene sortierte Arrays, um ein sortiertes Array zu bilden. Dort haben wir unser sortiertes Array.

Fahren Sie mit diesem Artikel über Zusammenführungssortierung in C ++ fort

Grundlegendes zum Algorithmus zum Zusammenführen von Sortierungen anhand eines Beispiels

Zu diesem Zeitpunkt wissen wir, welcher Ansatz von der Zusammenführungssortierung verwendet wird. Betrachten wir also ein Beispiel und gehen Sie jeden Schritt von Hello [] unsortiert zu einem sortierten Array durch.
Beispiel - Hallo [10, 3, 7, 1, 15, 14, 9, 22]

Warteschlangendatenstruktur in Java

Merge-sort-in-C++

Im obigen Bild haben wir ein unsortiertes Array betrachtet und die Zusammenführungssortierung verwendet, um ein sortiertes Array zu erhalten. Schauen wir uns nun jeden Schritt an und verstehen den gesamten Algorithmus

1. Zuerst haben wir ein Array betrachtet. Hallo [10, 3, 7, 1, 15, 14, 9, 22] In diesem Array gibt es insgesamt 8 Elemente

2. Wie wir zuvor gesehen haben, verwendet die Zusammenführungssortierung den Divide and Conquer-Ansatz, um die Elemente zu sortieren. Wir fanden m, das in der Mitte unseres Arrays liegt, und teilten unser Array von der Mitte, wobei m = (a - n) / 2 'a' der Index des am weitesten links stehenden Elements und n der Index des am weitesten rechts stehenden Elements unseres Arrays ist .

3. Nach der ersten Teilung haben wir 2 Teile, die jeweils aus 4 Elementen bestehen. Schauen wir uns die erste Hälfte an [10, 3, 7, 1].

4. Wir teilen [10, 3, 7, 1] in 2 Teile [10, 3] und [7, 1]. Danach teilen wir sie weiter in [10], [3], [7], [1]. Eine weitere Aufteilung ist nicht möglich, da wir m nicht berechnen können. Eine Liste mit einem einzelnen Element wird immer als sortiert betrachtet.

5. Wie erfolgt die Zusammenführung? Lass es uns herausfinden. Zuerst werden [10] und [3] in aufsteigender Reihenfolge [3, 10] verglichen und zusammengeführt, so wie wir [1, 7] erhalten.

neueste Technologie in der künstlichen Intelligenz

6. Danach vergleichen wir [3, 10] und [1, 7]. Einmal verglichen, führen wir sie in aufsteigender Reihenfolge zusammen und erhalten [1, 3, 7, 10].

7. [15, 14, 9, 2] wird ebenfalls geteilt und auf ähnliche Weise zu [9, 14, 15, 22] kombiniert.

8. Im letzten Schritt vergleichen und kombinieren wir [15, 14, 9, 2] [9, 14, 15, 22], um unser sortiertes Array zu erhaltend.h. [1, 3, 7, 9, 10, 14, 15, 22].

sortiere Array c ++ aufsteigend

Fahren Sie mit diesem Artikel über Zusammenführungssortierung in C ++ fort

Pseudocode für Zusammenführungssortierung

Beginnen Sie, wenn Sie übrig sind

Die Funktion mergeSort () ruft sich rekursiv auf, um unser Array zu teilen, bis es zu einem einzelnen Element wird, und die Funktion merge () wird zum Zusammenführen der sortierten Arrays verwendet.

Fahren Sie mit diesem Artikel über Zusammenführungssortierung in C ++ fort

Sortierprogramm in C ++ zusammenführen

#include #include #include using Namespace std void merge (int a [], int Firstindex, int m, int Lastindex) // führt die Unterarrays zusammen, die während der Division void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int Hallo [Größe], ​​ich cout<<'Enter the elements of the array one by one:n' for(i=0 i>Hallo [i] mergeSort (Hallo, 0, Größe - 1) cout<<'The Sorted List isn' for(i=0 i

Ausgabe-

Fahren Sie mit diesem Artikel über Zusammenführungssortierung in C ++ fort

Zeitliche Komplexität

Zeitkomplexität ist ein wichtiger Aspekt, der berücksichtigt werden muss, wenn wir über Algorithmen sprechen. Die Zusammenführungssortierung hat im Vergleich zu anderen Sortieralgorithmen eine große zeitliche Komplexität.

Worst-Case-Laufzeit - O (n log n)
Best-Case-Laufzeit - O (n log n)
Durchschnittliche Laufzeit - O (n log n)

Damit sind wir am Ende dieses Artikels zum Zusammenführen von Sortierungen in C ++ angelangt. Wenn Sie mehr erfahren möchten, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka wurde entwickelt, um Sie für Kern- und fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring zu schulen.

Hast du eine Frage an uns? Bitte erwähne es im Kommentarbereich dieses Blogs und wir werden uns so schnell wie möglich bei dir melden.