logo

Ordenar un vector en C++

Requisits previs: std::sort en C++ , vector en C++ , inicialitzar un vector en C++ .

CPP








tutorial de java
// 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;> }>



>

>

Sortida

Sorted 0 1 2 3 4 5 6 7 8 9>

Com ordenar en ordre descendent?
sort() pren un tercer paràmetre que s'utilitza per especificar l'ordre en què s'han d'ordenar els elements. Podem passar la funció major() per ordenar en ordre descendent. Aquesta funció fa la comparació d'una manera que posa els elements més grans abans.

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;> }>

instanceof en java
>

>

Sortida

Sorted 9 8 7 6 5 4 3 2 1 0>

Com ordenar en a ordre particular?
També podem escriure la nostra pròpia funció comparadora i passar-la com a tercer paràmetre.

La funció comparadora comprova, si la declaració retornada, és vertadera o falsa i retorna un valor bool que es passa a la funció d'ordenació.

Per exemple, diguem que Interval i1 = { 6 , 8 } i Interval i2 = { 1, 9 }. Quan això es passa a la funció de comparació, es compara i1.iniciar i i2.iniciar . Com que, i1.start (=6) fals . Això vol dir que l'Interval i1 no s'ha de col·locar abans de l'Interval i2. A continuació es mostra el codi d'aquesta funció.

CPP


proves i tipus de proves



// 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; }>

>

>

Sortida

Intervals sorted by start time : [1, 9] [2, 4] [4, 7] [6, 8]>

Com ordenar la matriu en ordre descendent en funció d'algun paràmetre mitjançant una funció de comparació?

Es pot passar una funció comparadora de tal manera que els elements de la matriu s'ordenin en ordre descendent.

C++


css primer fill



// 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;> }>

>

>

Sortida

Intervals sorted by ending time in descending order : [1, 9] [6, 8] [4, 7] [2, 4]>

Articles relacionats :
Ordenar un vector de parelles | Set 1
Ordenar un vector de parelles | Set 2