Vektorin lajittelu C++:ssa
Edellytykset: std::lajittele C++:ssa , vektori C++:ssa , alusta vektori C++:ssa .
CPP
// 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};>> ;> > for> (> auto> x : v)> > cout < < x < <> ' '> ;> > > return> 0;> }> |
Lähtö
Sorted 0 1 2 3 4 5 6 7 8 9
Kuinka lajitella laskevaan järjestykseen?
sort() ottaa kolmannen parametrin, jota käytetään määrittämään järjestys, jossa elementit lajitellaan. Voimme välittää suurempi()-funktion lajitellaksesi laskevaan järjestykseen. Tämä toiminto tekee vertailun tavalla, joka asettaa suuremmat elementit edelle.
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};>> > cout < <> 'Sorted
'> ;> > for> (> auto> x : v)> > cout < < x < <> ' '> ;> > > return> 0;> }> |
Lähtö
Sorted 9 8 7 6 5 4 3 2 1 0
Kuinka lajitella a tietty tilaus?
Voimme myös kirjoittaa oman vertailufunktiomme ja välittää sen kolmantena parametrina.
Vertailufunktio tarkistaa, onko palautettu lause tosi vai epätosi, ja palauttaa bool-arvon, joka välitetään lajittelufunktiolle.
Oletetaan esimerkiksi, että väli i1 = { 6 , 8 } ja väli i2 = { 1, 9 }. Kun tämä välitetään vertailufunktiolle, se vertailee i1.start ja i2.start . Koska, 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; }> |
Lähtö
Intervals sorted by start time : [1, 9] [2, 4] [4, 7] [6, 8]
Kuinka lajitella matriisi laskevaan järjestykseen jonkin parametrin perusteella käyttämällä vertailutoimintoa?
Vertailufunktio voidaan välittää siten, että taulukon elementit lajitellaan laskevaan järjestykseen.
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);>> ;> > for> (> auto> x : v)> > cout < <> '['> < < x.start < <> ', '> < < x.end < <> '] '> ;> > > return> 0;> }> |
Lähtö
Intervals sorted by ending time in descending order : [1, 9] [6, 8] [4, 7] [2, 4]
Aiheeseen liittyvät artikkelit :
Parien vektorin lajittelu | Sarja 1
Parien vektorin lajittelu | Sarja 2