Haufensart C ++

Haufensart C ++

Wie wir wissen, dass die C ++-Sprache viele Sortieralgorithmen zum Sortieren von Array-ähnlichen Strukturen hat. Eine dieser Sortierungstechniken ist die Haufensart. Es ist bei C ++ - Entwicklern sehr beliebt, da es als am effizientesten in Bezug auf seine Arbeit angesehen wird. Es unterscheidet sich ein wenig von anderen Sortierungstechniken, da die Informationen von Datenstrukturbäumen zusammen mit dem Konzept der Arrays erforderlich sind. Wenn Sie Binärbäume gehört und erfahren haben, ist das Erlernen der Haufensart für Sie kein Problem mehr.

Innerhalb einer Haufensart können zwei Arten von Haufen generiert werden, ich.e., Min-heap und max-heap. Der Max-heap sortiert den Binärbaum in absteigender Reihenfolge, während der Min-HEAP den binären Baum in aufsteigender Reihenfolge sortiert. Mit anderen Worten, der Haufen ist „max“, wenn der übergeordnete Knoten eines Kindes größer ist und umgekehrt. Wir haben uns also entschlossen, diesen Artikel für all diese naiven Benutzer von C ++ zu schreiben, die keine Vorkenntnisse über Sortieren haben, insbesondere über die Haufensart.

Beginnen wir unser heutiges Tutorial mit dem Ubuntu 20.04 Login, um Zugriff auf das Linux -System zu erhalten. Verwenden Sie nach der Anmeldung die Abkürzung „Strg+Alt+T“ oder den Aktivitätsbereich, um die Konsolenanwendung mit dem Namen „Terminal) zu öffnen.„Wir müssen die Konsole für die Implementierung für eine Datei verwenden. Der Befehl für die Erstellung ist eine einfache Anweisung mit einem Wort "Touch", die dem neuen Namen für eine Datei erstellt wird. Wir haben unsere C ++ - Datei als „Heap“ genannt.CC ”. Nach der Dateierstellung müssen Sie mit der Implementierung der darin enthaltenen Codes beginnen. Dafür müssen Sie es zuerst über einige Linux -Redakteure öffnen. Es gibt drei integrierte Redakteure von Linux, die für diesen Zweck verwendet werden können, ich.e., Nano, Vim und Text. Wir verwenden den Redakteur "GNU Nano".

Beispiel # 01:

Wir werden ein einfaches und ziemlich klares Programm für die Heap -Sortierung erklären, damit unsere Benutzer es gut verstehen und lernen können. Verwenden Sie den C ++-Namespace und die Bibliothek für Eingabe-Output zu Beginn dieses Code. Die Funktion heapify () wird für beide Schleifen durch eine Funktion „sort ()“ aufgerufen. Die erste "für" -Schloop nennt das Array "a", n = 6 und root = 2,1,0 (in Bezug auf jede Iteration), um einen reduzierten Haufen zu erstellen.

Wenn wir den Wurzelwert jedes Mal verwenden, erhalten wir den variablen Wert „größten“ Wert von 2,1,0. Dann berechnen wir die linken und rechten „R“ -Knoten des Baumes unter Verwendung des "Root" -Wertwerts. Wenn der linke Knoten größer als "root" ist, wird das erste "wenn" "L" dem größten zuweisen. Wenn der richtige Knoten größer als die Wurzel ist, weist die zweite „wenn“ „r“ dem größten zu, dem größten. Wenn „größtes“ nicht dem Wert „Root“ entspricht, tausch.e., rekursiver Anruf. Der oben genannte gesamte Prozess wird auch für den maximalen Haufen verwendet, wenn die zweite „für“ -Schloop innerhalb der Sortierfunktion iteriert wird.

Die Funktion "Sort ()" -Felow für das Sortieren von Array "A" sortiert in aufsteigender Reihenfolge. Die erste „für“ -Schloop ist hier; Erstellen Sie einen Haufen, oder Sie können sagen. Dafür wird der Wert von „I“ durch „N/2-1“ berechnet und jedes Mal nach dem Funktionsaufruf von Heapify () abgelehnt. Wenn Sie insgesamt 6 Werte haben, wird es 2. Insgesamt 3 Iterationen werden durchgeführt, und die Heapify -Funktion wird dreimal aufgerufen. Die nächste "für" -Schloop ist hier, um das aktuelle Wurzel an das Ende eines Arrays zu verschieben und die Heapify -Funktion 6 Mal aufzurufen. Die Swap -Funktion nimmt den Wert für den aktuellen Iterationsindex "a [i]" eines Arrays mit dem ersten Indexwert "A [0]" eines Arrays über. Die Heap () -Funktion wird aufgerufen, um den maximalen Haufen auf dem bereits erzeugten reduzierten Heap zu generieren, i.e., "2,1,0" zunächst "für" Schleife.

Hier kommt unsere Funktion "display ()" für dieses Programm, das ein Array und die Anzahl der Elemente aus dem Main () -Treibercode genommen hat. Die Funktion „display ()“ wird zweimal aufgerufen, ich.e., Vor dem Sortieren, um das zufällige Array anzuzeigen und nach der Sortierung das sortierte Array anzuzeigen. Es wird mit der „für“ -Schloop gestartet, die die Variable „n“ für die letzte Iterationsnummer verwendet und mit dem Index 0 eines Arrays startet. Das C ++ - Objekt "Cout" wird verwendet, um jeden Wert von Array "A" bei jeder Iteration anzuzeigen, während die Schleife fortgesetzt wird. Schließlich werden die Werte für das Array „A“ nacheinander auf der Schale angezeigt, die durch einen Raum voneinander getrennt sind. Endlich wird der Zeilenunterbrechung erneut mit dem Objekt „Cout“ eingefügt.

Dieses Programm startet von der Funktion main (), da C ++ immer dazu neigt, daraus zu ausgeführt. Zu Beginn unserer Funktion main () wurde das Ganzzahlarray „A“ mit insgesamt 6 Werten initialisiert. Alle Werte werden in einer zufälligen Reihenfolge innerhalb von Array A gespeichert. Wir haben die Größe des Arrays „A“ und die Größe des ersten Indexwerts „0“ von Array A zur Berechnung der Gesamtzahl der Elemente in einem Array übernommen. Dieser berechnete Wert wird in einer neuen Variablen „n“ des Ganzzahl -Typs gespeichert. Die C ++ - Standardausgabe kann mit Hilfe eines Objekts „Cout“ angezeigt werden.”

Wir verwenden also dasselbe "Cout" -Objekt, um die einfache Nachricht "Original -Array" der Shell anzuzeigen, damit unsere Benutzer wissen, dass das ursprüngliche Original -Array angezeigt wird. Jetzt haben wir in diesem Programm eine benutzerdefinierte „Anzeige“ -Funktion, die hier aufgerufen wird, um das ursprüngliche Array „A“ auf der Shell anzuzeigen. Wir haben es unser ursprüngliches Array und die Variable „n“ in den Parametern übergeben. Nachdem wir das ursprüngliche Array angezeigt haben.

Das ursprüngliche Array und die Variable „N“ werden in den Parametern an sie übergeben. Die nächste Anweisung "Cout" wird verwendet, um die Nachricht "Sortiertes Array" nach der Verwendung einer "Sortier" -Funktion anzuzeigen, um das Array „a“ ​​zu sortieren.”Der Funktionsaufruf zur Funktion„ Anzeige “wird erneut verwendet. Dies soll das sortierte Array auf der Schale angezeigt werden.

Nach Abschluss des Programms müssen wir es fehlerfrei machen, indem wir den Compiler „G ++“ auf der Konsole verwenden. Der Dateiname wird mit dem Compiler -Befehl "g ++" verwendet. Der Code wird als fehlerfrei angegeben, wenn er keine Ausgabe auswirkt. Danach das "./A.OUT OUT ”-Befehl kann abgeschaltet werden, um die fehlerfreie Codedatei auszuführen. Das ursprüngliche Array und das sortierte Array wurden angezeigt.

Abschluss:

Hier geht es um die Arbeit einer Haufensart und eine Möglichkeit, die Heap -Sortierung in C ++ - Programmcode zur Durchführung der Sortierung zu verwenden. In diesem Artikel haben wir das Konzept von Max Heap und Min Heap für die Haufen -Sortierung ausgearbeitet und auch die Verwendung von Bäumen für diesen Zweck erörtert. Wir haben die Heap -Sortierung für unsere neuen C ++ - Benutzer, die das Linux -System verwenden, auf die einfachste Weise erklärt.