Schnelle Sortierung in C ++

Schnelle Sortierung in C ++

Das Anordnen von Dingen nacheinander ist eine Aufgabe, die wir im täglichen Leben ausführen, sei es in aufsteigender Reihenfolge oder absteigender Reihenfolge angeordnet. Der Prozess der Anordnung von Dingen in einer richtigen Reihenfolge wird als Sortierung bezeichnet. Aufsteigern steigt die Reihenfolge und die Abstieg ist abnehmend die Reihenfolge. In der Programmierung führen wir die Sortierung auch mit verschiedenen Algorithmen durch. Ein Algorithmus bietet jedoch die schnellste Sortierung, die "schnelle Sortier" ist. Dieser Sortieralgorithmus sortiert das Array schneller als die anderen Algorithmen. Es funktioniert über die Divide- und Eroberungsregel, legt zunächst einen Drehpunkt fest und unterteilt das Array in zwei Sub-Arrays. Stellen Sie dann einen Drehpunkt für Sub-Arrays fest und der Vorgang wird fortgesetzt, bis wir das Ende erreichen und das erforderliche Array sortiert ist. Dieser Artikel erläutert eine eingehende Arbeit einer schnellen Sortierung in C ++ mit einem praktischen Codierungsbeispiel in aufsteigender Reihenfolge.

So wählen Sie einen Drehpunkt aus

Bevor Sie sich weiter in Details befassen, ist es wichtig zu erfahren, wie wir einen Drehpunkt für den Schnellsortalgorithmus auswählen können.

    • Erstes Element
    • Letztes Element
    • Medianelement
    • Zufälliges Element

Es gibt keine Einschränkung für die Auswahl eines Pivots. Meistens setzen wir den letzten Wert des Arrays als Drehpunkt.

Algorithmen:

Die schnelle Sortierung erfolgt mit zwei Algorithmen - einer soll das Array entsprechend dem Pivot -Punkt und der andere zum Sortieren des Arrays dienen.

Zur Partitionierung:

    • Nehmen Sie zwei Variablen als niedrigsten und am höchsten.
    • Speichern Sie den Startindex des Arrays im untersten und speichern Sie dann den letzten Index in der höchsten.
    • Definieren Sie eine andere Variable und initialisieren Sie sie mit der niedrigsten Variablen wie "iter".
    • Wählen Sie das letzte Mitglied des Arrays aus, um als Pivot zu fungieren.
    • Durch das Array gehen. Danach passen Sie jedes Element mit dem Pivot -Wert an.
    • Wenn das Array -Element geringer ist als der Drehpunkt, erhöhen Sie den „Iter“ und tauschen Sie ihre Positionen aus.
    • Inkrementieren Sie das „I“ um 1 und wiederholen Sie den Vorgang, bis das Ende des Arrays erreicht ist. Beenden Sie die Schleife dort und geben Sie die ITER-1 zurück.

Der zurückgegebene Wert gibt uns die Position des Pivot -Index. Vor dem Drehpunkt gibt es die Elemente, die kleiner als der Drehwert sind. Nach dem Drehpunkt gibt es die Elemente, die größer sind als der Drehwert.

Zum Sortieren:

Gehen Sie nun mit der Sortierung fort. Verwenden Sie die folgenden Anweisungen, um ein Array zu sortieren:

    • Wählen Sie das letzte Element des Arrays, um als Drehpunkt zu fungieren.
    • Der zurückgegebene Index -Partition -Algorithmus ist der korrekte Index eines Pivots.
    • Die QuickSort -Methode wird wiederholt auf der linken und rechten Subtarrays aufgerufen.

Mit Hilfe dieser beiden Algorithmen können wir die schnelle Sortierung in jedem Array durchführen. Ein Beispiel für die Quick -Sortier -Methode ist im Folgenden aufgeklärt:

Schnelle Sortierung in aufsteigender Reihenfolge

Erklären wir die Methode "Schnellsort", um ein Ganzzahl -Array in zunehmender Reihenfolge zu sortieren.

Code:

#enthalten
Verwenden von Namespace STD;
void swap (int array_0 [], int Position_1, int Position_2)
int temp_0;
temp_0 = array_0 [Position_1];
Array_0 [Position_1] = Array_0 [Position_2];
Array_0 [Position_2] = temp_0;
int partition (int array_0 [], int niedrig, int hoch, int pivot)
int i_0 = niedrig;
int j_0 = niedrig;
während (i_0 <= high) if(array_0[i_0] > pivot) i_0 ++;
sonst swap (array_0, i_0, j_0); i_0 ++; J_0 ++;
Rückgabe j_0-1;

void quicksort_0 (int array_0 [], int niedrig, int hoch)
Ich fließe < high)
int pivot = array_0 [hoch];
int Position = partition (Array_0, niedrig, hoch, drehbar);
Quicksort_0 (Array_0, niedrig, Position-1);
Quicksort_0 (array_0, Position+1, hoch);
int main ()

int n [4] = 12,3,8,6;
TRCKSORT_0 (N, 0, 3);
Cout<<"The sorted array is: ";
für (int i = 0; i < 4 ; i++) cout<< n[i]<<"\t";


Starten Sie den Code, indem Sie die Bibliothek importieren und den Standard -Namespace eingeben. Definieren Sie danach eine Methode mit dem Namen "Swap" des Hohlraum -Rückgabetyps. Übergeben Sie in dieser Funktion drei Parameter mit ganzzahliger Typ. Die beiden Argumente "Position_1" und "Position_2" werden für Positionen verwendet. Der dritte, "temp_0", ist ein Array. Die Methode tauscht die Positionen von Array -Elementen aus. Die Variable mit dem Namen "temp_0" wird deklariert, um den Wert vorübergehend zu speichern. Darüber hinaus initialisieren Sie diese „temp_0“ mit der ersten Position des Arrays. Zuweisen Sie dann die zweite Position des Arrays der ersten Position eines Arrays "Position_1" eines Arrays. Und weisen Sie der zweiten Position des Arrays die Temperatur zu, nämlich "Position_2". Dies funktioniert als a = b; B = C; c = a. Diese Methode führt nur den Swap durch.

Definieren Sie außerdem eine andere Funktion für die Partition. Diese Methode unterteilt das Array in zwei Teile und unterteilt die Sub-Arrays weiter in Unterarrays. Diese Funktion handelt. Diese Partition () -Methode hat vier Argumente vom Typ Ganzzahl Typ. Erstens ist ein Array von „Array_0“, der zweite ist „niedrig“, der den Startindex des Arrays speichert, der dritte ist „hoch“, der den letzten Index des Arrays enthält, und der vierte ist „Pivot“. Initialisieren Sie in dieser Methode zwei Variablen - "i_0" und "j_0" - mit "niedrig". Diese beiden Variablen haben einen "int" -Datentyp. Wie wir wissen, enthält „niedrig“ den ersten Index des Arrays. Verwenden Sie in der nächsten Zeile die "while" -Schloop, um das Array zu iterieren. Stellen Sie zunächst die Bedingung von "'While" als i_0 fest <= high. Iterate until we reach the last index of the array. Inside the “while” loop, employ the “if” decision-making statement to check whether the array elements are greater than the pivot or not. If this condition is fulfilled, the body of “if” executes which increments the iterator. Otherwise, the body of “else” is run. In the body of “else”, we callthe swap() method that swaps the array values until they are in ascending order. Outside the “while”, return the “j_0-1” to the function. Because that is incremented in the “else” part.

Definieren Sie eine andere QuickSort () -Methode des Void -Rückgabe -Typs, um die Schnellsortierung durchzuführen. Drei Argumente - "array_0", "niedrig" und "hoch" - werden dieser Funktion eine Ganzzahltypdaten bereitgestellt. Stellen Sie außerdem den Zustand "If" fest. Wenn „niedrig“ geringer ist als das „Hoch“, initialisieren Sie den „Drehpunkt“ mit dem letzten Index des Arrays „High“. Rufen Sie für die Variable „Position“ die Partition () -Methode auf. Rufen Sie dann rekursiv die Funktion von QuickSort () auf der rechten und linken Unterarrays auf.

Verwenden Sie im letzten Teil des Code die Main () -Methode. Initialisieren Sie als Nächst. Diese Funktion enthält drei Argumente. Es führt eine kurze Sortierung im angegebenen Array durch und sortiert dieses Array. Geben Sie die „Cout ein<<” command to print the “The sorted array is:” line. To display the sorted array, use a “for” loop and iterate until the end of the array is reached.

Ausgang:

Das sortierte Array ist: 3 6 8 12

Abschluss

Die schnelle Sortierung in C ++ wird in diesem Leitfaden besprochen. In der Programmierung ist es notwendig, die Arrays in aufsteigender oder absteigender Reihenfolge anzuordnen. Es gibt mehrere Sortieralgorithmen wie Blasensorten, Zusammenführungssortieren usw. Schnelle Sorte ist eine von ihnen, aber wie der Name sagt, sortiert es das Array schneller als andere. In diesem Artikel wird erklärt, was ein Drehpunkt ist, welches Array -Element der Drehpunkt sein kann, den Algorithmen für die schnelle Sortierung verwendet und wie sie durchführen. Dieser Artikel endet mit dem Code von C ++, in dem wir die schnelle Sortierung implementieren.