Sortieren eines Vektors in C++

Einführung

In diesem Tutorial konzentrieren wir uns auf das Sortieren eines Vektors in C++.

Sortieren ist eine der am häufigsten durchgeführten Operationen in jeder Programmiersprache. Ähnlich verhält es sich in C++, wo es mehrere Algorithmen gibt, mit denen jede Datenstruktur sortiert werden kann.

Bei Vektoren können wir insbesondere Sortieroperationen in beliebiger Reihenfolge (aufsteigend oder absteigend) durchführen.

Sortieren eines Vektors in C++ in aufsteigender Reihenfolge

Ein Vektor in C++ kann leicht in aufsteigender Reihenfolge sortiert werden, indem die sort()-Funktion verwendet wird, die in der Algorithmus-Headerdatei definiert ist.

Die sort()-Funktion sortiert eine gegebene Datenstruktur und gibt nichts zurück. Das Sortieren findet zwischen den zwei übergebenen Iteratoren oder Positionen statt. Der dritte Parameter bestimmt die Reihenfolge, in der die Elemente verglichen werden.

Standardmäßig, wenn der dritte Parameter nicht übergeben wird, betrachtet die Funktion ihn als std::less<int>() Funktion. Diese Funktion gibt wahr oder falsch zurück, basierend auf dem Vergleich zweier Argumente, ob das erste kleiner als das andere ist.

Lassen Sie uns nun sehen, wie wir einen Vektor in C++ (aufsteigender Reihenfolge) sortieren können.

#include<iostream>    
#include<vector> 
#include<algorithm>
using namespace std;
int main()
{  
    //vector initialisation
    vector<int> vec {5, 4, 3, 2, 1};
    
    cout<<"Before sorting vector : ";
    for(auto i=vec.begin(); i<vec.end(); i++)
    {
        cout<<" "<<*i;
    }
    
    std::sort(vec.begin(),vec.end());//Sorting the vector
    
    cout<<"\n\nAfter sorting vector : ";
    for(auto i=vec.begin(); i<vec.end(); i++)
    {
        cout<<" "<<*i;
    }
    return 0;
}

Output:

Vor dem Sortieren des Vektors: 5 4 3 2 1

Nach dem Sortieren des Vektors: 1 2 3 4 5

Sortieren eines Vektors in C++ in absteigender Reihenfolge

Wie wir bereits früher sagten, bestimmt das dritte Argument für die sort()-Funktion in C++ die Sortierreihenfolge. Daher können wir Funktionen darin definieren, um jeden Vektor in unserer gewünschten Reihenfolge zu sortieren (in diesem Fall absteigend).

1. Verwendung von greater<int>() in sort()

Ähnlich wie die less<int>()-Funktion gibt die greater<int>()-Funktion einen boolschen Wert als wahr oder falsch zurück, aber im entgegengesetzten Sinne. Wenn das erste Argument größer als das zweite ist, gibt die Funktion wahr zurück und falsch, wenn die obige Bedingung nicht zutrifft.

Lassen Sie uns sehen, wie wir sie verwenden können, um einen sortierten Vektor in absteigender Reihenfolge zu erhalten.

#include<iostream>    
#include<vector> 
#include<algorithm>
using namespace std;
int main()
{  
    //vector initialisation
    vector<int> vec { 2,4,6,8,10 };
    
    cout<<"Before sorting vector : ";
    for(auto i=vec.begin(); i<vec.end(); i++)
    {
        cout<<" "<<*i;
    }
    
    std::sort(vec.begin(),vec.end(), greater<int>());//Sorting the vector using greater<int>() function
    
    cout<<"\n\nAfter sorting vector : ";
    for(auto i=vec.begin(); i<vec.end(); i++)
    {
        cout<<" "<<*i;
    }
    return 0;
}

Output:

Vor dem Sortieren des Vektors: 2 4 6 8 10

Nach dem Sortieren des Vektors: 10 8 6 4 2

2. Verwendung von Lambda-Ausdrücken in sort()

Seit C++11 wurde die Verwendung von Lambda-Ausdrücken in der C++-Programmierung eingeführt. Sie sind nichts anderes als einfache Einzeilenfunktionen, die weder eine Deklaration benötigen noch einen Rückgabetyp angeben müssen.

Daher können wir unseren eigenen definierten Lambda-Ausdruck verwenden, um die Sortierreihenfolge durch die sort()-Funktion zu bestimmen. Dies kann erreicht werden, indem der Einzeilenausdruck als dritter Parameter an die sort()-Funktion übergeben wird. Lassen Sie uns sehen, wie das funktioniert

#include<iostream>    
#include<vector> 
#include<algorithm>
using namespace std;
int main()
{  
    //vector initialisation
    vector<int> vec { 11,22,33,44,55 };
    
    cout<<"Before sorting vector : ";
    for(auto i=vec.begin(); i<vec.end(); i++)
    {
        cout<<" "<<*i;
    }
    
    std::sort(vec.begin(),vec.end(), [](int &a, int &b){ return a>b; });
        //Sorting the vector using user-defined lambda expression(return type bool)
    
    cout<<"\n\nAfter sorting vector : ";
    for(auto i=vec.begin(); i<vec.end(); i++)
    {
        cout<<" "<<*i;
    }
    return 0;
}

Output:

Vor dem Sortieren des Vektors : 11 22 33 44 55

Nach dem Sortieren des Vektors : 55 44 33 22 11

Hier wird der Ausdruck a>b verwendet, um zwei übergebene Argumente aus dem Vektor zu vergleichen. Wie wir aus der Ausgabe des obigen Codes sehen können, wird der Vektor in der gewünschten absteigenden Reihenfolge sortiert.

Fazit

In diesem Artikel haben wir also gelernt, wie man Vektoren in C++ sowohl in aufsteigender als auch in absteigender Reihenfolge sortiert.

Kostenlosen Account erstellen

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

Das könnte Sie auch interessieren: