Verwendung der sort()-Funktion in der C++ std-Bibliothek

Einführung

Hallo! Heute werden wir die sort()-Funktion in der std-Bibliothek in C++ besprechen.

Grundlegend ist Sortieren jeder Prozess des systematischen Anordnens von Elementen. Diese Elemente könnten Bestandteile einer Sequenz oder einer beliebigen Datenstruktur sein.

In C++ bietet die Standardbibliothek eine vordefinierte und sofort verwendbare Funktion sort() zur Durchführung dieser Sortieroperation an. Also lasst uns direkt einsteigen.

Die std::sort()-Funktion in C++

Die std::sort()-Funktion in C++ ist eine integrierte Funktion, die verwendet wird, um jede Form von Datenstruktur in einer bestimmten Reihenfolge zu sortieren. Sie ist in der Algorithmus-Headerdatei definiert. Das Funktionsprototyp von sort() ist unten angegeben.

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

Hier gibt die Funktion nichts zurück. Sie aktualisiert lediglich die Elemente/Gegenstände vom ersten bis zum letzten iterierbaren Element oder Position. Der dritte Parameter (optional) comp muss eine Funktion sein, die die Reihenfolge bestimmt, in der die Elemente sortiert werden sollen. Wenn nicht angegeben, erfolgt die Sortierung in aufsteigender Reihenfolge und gilt standardmäßig als std::less<int>()-Funktion.

Die sort()-Funktion verwendet eine dreifache hybride Sortiertechnik namens Introsort. Es ist eine Kombination aus Quick Sort, Heap Sort und Insertion Sort.

Sortieren von Daten mit der sort()-Funktion in C++

1. Sortieren in aufsteigender Reihenfolge

Wie bereits erwähnt, sortiert die sort()-Funktion standardmäßig eine Reihe von Elementen in aufsteigender Reihenfolge, wenn der comp-Parameter nicht erwähnt wird.

Für das folgende Beispiel haben wir lediglich die ersten (Start-) und letzten (End-) iterierbaren Elemente übergeben, um ein Array in aufsteigender Reihenfolge zu sortieren.

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{  
    //Array-Initialisierung
    int demo[5] = {5, 4, 3, 2, 1};
    
    int len = sizeof(demo)/sizeof(demo[0]);
     
    cout<<"Vor dem Sortieren des Arrays: ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
     
    std::sort(demo, demo + len);//Sortieren des Demo-Arrays
     
    cout<<"\n\nNach dem Sortieren des Arrays: ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
    return 0;
}

Hier ist demo die Adresse des ersten Elements und (demo + len) ist die Adresse des letzten Elements des gegebenen Arrays. Da comp standardmäßig die Funktion std::less() ist, sortiert die Funktion sort() das Array in aufsteigender Reihenfolge.

Hinweis: Die Funktion std::less() vergleicht zwei Argumente und gibt True oder False zurück, je nachdem, ob das erste Argument kleiner ist als das andere.

2. Sortieren in absteigender Reihenfolge

Wir können auch eine Datenstruktur mit der sort()-Funktion in absteigender Reihenfolge sortieren, indem wir ihren dritten Parameter manipulieren. Lassen Sie uns sehen, wie.

Im untenstehenden Code haben wir die std::greater<int>()-Funktion verwendet, die genau das Gegenteil der std::less<int>()-Funktion bewirkt. Sie vergleicht ihre beiden Argumente und gibt True zurück, wenn das erste größer als das andere ist. Andernfalls gibt sie False zurück.

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{  
    //Array-Initialisierung
    int demo[5] = {44, 22, 55, 33, 66};
    
    int len = sizeof(demo)/sizeof(demo[0]);
     
    cout<<"Vor dem Sortieren des Arrays: ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
     
    std::sort(demo, demo + len, greater<int>());//Sortieren des Demo-Arrays
     
    cout<<"\n\nNach dem Sortieren des Arrays: ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
    return 0;
}
        

Wir können auch eine Lambda-Funktion als dritten Parameter für die sort()-Funktion verwenden, wie unten gezeigt.

#include    
#include
using namespace std;
int main()
{  
    //array initialisation
    int demo[5] = {44, 22, 55, 33, 66};
    
    int len = sizeof(demo)/sizeof(demo[0]);
     
    cout<<"Before sorting array : ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i]; } std::sort(demo, demo + len, [](int &e1, int &e2){ return e1>e2; });//Sorting demo array
     
    cout<<"\n\nAfter sorting array : ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
    return 0;
}

3. Sortieren mit benutzerdefinierter Reihenfolge

Der dritte Parameter (comp) für die std::sort()-Funktion kann auch eine benutzerdefinierte Funktion sein, die die Sortierreihenfolge definiert.

Zum Beispiel haben wir im folgenden Code-Snippet versucht, die Elemente eines Arrays auf Basis der Reste zu sortieren, die sie bei der Teilung durch 10 (mit dem ‚%‘ Operator) erzeugen.

#include<iostream>
#include<algorithm>
using namespace std;

//Unsere Funktion
bool My_func( int a, int b)
{	
	return (a%10)<(b%10);
}

int main()
{  
    //Array-Initialisierung
    int demo[5] = {18, 45, 34, 92, 21};
    
    int len = sizeof(demo)/sizeof(demo[0]);
     
    cout<<"Vor dem Sortieren des Arrays: ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
     
    std::sort(demo, demo + len, My_func);//Sortieren des Demo-Arrays
     
    cout<<"\n\nNach dem Sortieren des Arrays: ";
    for(int i=0; i<len; i++)
    {
        cout<<" "<<demo[i];
    }
    return 0;
}

Komplexität der std::sort()-Funktion in C++

Die sort()-Funktion führt Nlog(N) Vergleiche durch, um N Elemente zu sortieren. Daher hat sie im schlechtesten Fall eine O(Nlog(N))-Komplexität.

Zusammenfassung

Das war’s für dieses Mal. Heute haben wir die Verwendung und Arbeitsweise der sort()-Funktion in der C++-Standardbibliothek verstanden. Ich hoffe, es war verständlich – sort() Funktion in der C++ std Library: Wie anwenden?

Bitte beachten Sie, dass die sort()-Funktion auch für andere Datenstrukturen als Arrays verwendet werden kann, wie z.B. Vektoren… Für dieses Tutorial haben wir Arrays zur besseren Veranschaulichung betrachtet.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: