Forutsetninger: std::sort i C++ , vektor i C++ , initialisere en vektor i C++ .
CPP
tallene i alfabetet
// C++ program to sort a vector in non-decreasing> // order.> #include> using> namespace> std;> > int> main()> {> > vector<> int> >v{ 1, 5, 8, 9, 6, 7, 3, 4, 2, 0};> > > sort(v.begin(), v.end());> > > cout <<> 'Sorted
'> ;> > for> (> auto> x : v)> > cout << x <<> ' '> ;> > > return> 0;> }> |
>
>Produksjon
Sorted 0 1 2 3 4 5 6 7 8 9>
Hvordan sortere i synkende rekkefølge?
sort() tar en tredje parameter som brukes til å spesifisere rekkefølgen elementer skal sorteres i. Vi kan sende funksjonen greater() for å sortere i synkende rekkefølge. Denne funksjonen gjør sammenligning på en måte som setter større elementer foran.
CPP
// C++ program to sort a vector in non-increasing> // order.> #include> using> namespace> std;> > int> main()> {> > vector<> int> >v{ 1, 5, 8, 9, 6, 7, 3, 4, 2, 0};> > > sort(v.begin(), v.end(), greater<> int> >());> > > cout <<> 'Sorted
'> ;> > for> (> auto> x : v)> > cout << x <<> ' '> ;> > > return> 0;> }> |
>
>Produksjon
Sorted 9 8 7 6 5 4 3 2 1 0>
Hvordan sortere i en spesiell rekkefølge?
Vi kan også skrive vår egen komparatorfunksjon og sende den som en tredje parameter.
Komparatorfunksjonen sjekker, om setningen returnert, er sann eller usann og returnerer en bool-verdi som sendes til sorteringsfunksjonen.
La oss for eksempel si Intervall i1 = { 6 , 8 } og Intervall i2 = { 1, 9 }. Når dette sendes til komparatorfunksjonen, sammenlignes det i1.start og i2.start . Siden, i1.start (=6)
CPP
// A C++ program to sort vector using> // our own comparator> #include> using> namespace> std;> > // An interval has start time and end time> struct> Interval {> > int> start, end;> };> > // Compares two intervals according to starting times.> bool> compareInterval(Interval i1, Interval i2)> {> > return> (i1.start } int main() { vector v { { 6, 8 }, { 1, 9 }, { 2, 4 }, { 4, 7 } }; // sort the intervals in increasing order of // start time sort(v.begin(), v.end(), compareInterval); cout << 'Intervals sorted by start time :
'; for (auto x : v) cout << '[' << x.start << ', ' << x.end << '] '; return 0; }> |
>
>Produksjon
Intervals sorted by start time : [1, 9] [2, 4] [4, 7] [6, 8]>
Hvordan sortere matrisen i synkende rekkefølge basert på en parameter ved å bruke en komparatorfunksjon?
En komparatorfunksjon kan sendes på en slik måte at elementene i matrisen blir sortert i synkende rekkefølge.
C++
// A C++ program to sort vector using> // our own comparator> #include> using> namespace> std;> > // An interval has start time and end time> struct> Interval {> > int> start, end;> };> > // Compares two intervals according to ending times in descending order.> bool> compareInterval(Interval i1, Interval i2)> {> > return> (i1.end>i2.end);> }> > int> main()> {> > vector v { { 6, 8 }, { 1, 9 }, { 2, 4 }, { 4, 7 } };> > > // sort the intervals in decreasing order of> > // end time> > sort(v.begin(), v.end(), compareInterval);> > > cout <<> 'Intervals sorted by ending time in descending order :
'> ;> > for> (> auto> x : v)> > cout <<> '['> << x.start <<> ', '> << x.end <<> '] '> ;> > > return> 0;> }> |
>
>Produksjon
Intervals sorted by ending time in descending order : [1, 9] [6, 8] [4, 7] [2, 4]>
Relaterte artikler :
Sortere en vektor av par | Sett 1
Sortere en vektor av par | Sett 2