Kaip naudoti funkciją stable_sort() C++

Kaip Naudoti Funkcija Stable Sort C



C++ yra įvairių funkcijų, skirtų rūšiuoti sekos elementus tam tikra tvarka. Panašiai kaip ir rūšiavimo funkcija, stabilus_rūšiavimas naudojamas elementams rūšiuoti diapazone (pirmas, paskutinis). Pagrindinis skirtumas tarp jų yra tas stabilus_rūšiavimas išlaiko santykinę vienodų reikšmių elementų tvarką.

Šioje išsamioje pamokoje parodysime, kaip veikia stabilus_rūšiavimas() C++ kalboje.

Kaip naudoti funkciją stable_sort() C++

C++ kalboje stabilus_rūšiavimas() yra standartinis bibliotekos algoritmas, kuris išdėsto elementus didėjančia tvarka ir išlaiko tą pačią lygiaverčių elementų tvarką. Tai reiškia, kad jei du elementai yra lygūs, elementas, kuris rodomas pirmas konteineryje prieš rūšiavimą, vis tiek bus pirmas rūšiuojamame sąraše. Ši funkcija veikia pakartotinai dalijant konteinerį (masyvus, vektorius, susietus sąrašus), rūšiuojant juos atskirai ir sujungiant, kad būtų gautas surūšiuotas konteineris. Jis patenka į antraštės failą.







Bendra naudojimo sintaksė stabilus_rūšiavimas() C++ yra:



stabilus_rūšiavimas ( Pirmiausia „RandomAccessIterator“. , RandomAccessIterator paskutinis ) ;

Čia, Pirmas yra iteratorius, nukreipiantis į pirmąjį rūšiuojamo diapazono elementą, ir paskutinis yra iteratorius, nukreipiantis į elementą po paskutinio rūšiuojamo diapazono elemento.



The stabilus_rūšiavimas() funkcija naudoja nemažėjančią tvarką, kad surūšiuotų įrašus diapazone [pirmas, paskutinis], t. y. nuo mažiausio iki didžiausio elemento. Pagal numatytuosius nustatymus funkcija lygina elementus per mažiau nei operatorius (<).





1 pavyzdys

Apsvarstykite toliau pateiktą kodo pavyzdį, šiame kode sukūrėme vektorių sąrašą ir inicijavo jį kai kuriomis reikšmėmis. Toliau mes panaudojome stabilus_rūšiavimas() surūšiuoti duoto vektoriaus reikšmes didėjančia tvarka. Nerūšiuoti ir surūšiuoti vektoriai spausdinami konsolėje naudojant diapazonu pagrįstą kilpą.

#include

#include

#include

naudojant vardų sritį std ;



tarpt pagrindinis ( )

{

vektorius < tarpt > sąrašą = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;

cout << 'Skaičiai prieš rūšiavimą:' ;

kiekvienam ( sąrašą. pradėti ( ) , sąrašą. galas ( ) , [ ] ( tarpt x ) {

cout << x << ' ' ;

} ) ;

stabilus_rūšiavimas ( sąrašą. pradėti ( ) , sąrašą. galas ( ) ) ;

cout << \n Skaičiai po rūšiavimo: ' ;

kiekvienam ( sąrašą. pradėti ( ) , sąrašą. galas ( ) , [ ] ( tarpt x ) {

cout << x << ' ' ;

} ) ;



grąžinti 0 ;

}




2 pavyzdys

Toliau pateiktame pavyzdyje sukūrėme sveikųjų skaičių masyvą ir inicijavome jį kai kuriomis reikšmėmis. Tada pagal numatytuosius nustatymus stabilus_rūšiavimas() rūšiuoja elementus didėjančia tvarka:

#include

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( )

{

tarpt masyvas [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

tarpt n = dydis ( masyvas ) / dydis ( masyvas [ 0 ] ) ;

cout << 'Originalus masyvas yra: \n ;

dėl ( tarpt i = 0 ; i < n ; ++ i ) {

cout << masyvas [ i ] << ' ' ;

}

stabilus_rūšiavimas ( masyvas , masyvas + n ) ;

cout << \n Masyvas po rūšiavimo yra: \n ;

dėl ( tarpt i = 0 ; i < n ; ++ i ) {

cout << masyvas [ i ] << ' ' ;

}

grąžinti 0 ;

}

3 pavyzdys

The stabilus_rūšiavimas paima trečiąjį parametrą, kad nurodytų elemento rūšiavimo tvarką. Žemiau pateiktame pavyzdyje mes panaudojome didesnis () funkcija su stabilus_rūšiavimas() masyvo elementus rūšiuoti mažėjančia tvarka

#include

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( )

{

tarpt masyvas [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

tarpt n = dydis ( masyvas ) / dydis ( masyvas [ 0 ] ) ;

cout << 'Originalus masyvas: \n ;

dėl ( tarpt i = 0 ; i < n ; ++ i ) {

cout << masyvas [ i ] << ' ' ;

}

stabilus_rūšiavimas ( masyvas , masyvas + n , didesnis < tarpt > ( ) ) ;

cout << \n Masyvas po rūšiavimo: \n ;

dėl ( tarpt i = 0 ; i < n ; ++ i ) {

cout << masyvas [ i ] << ' ' ;

}

grąžinti 0 ;

}

Apatinė eilutė

The stabilus_rūšiavimas() funkcija C++ yra standartinis bibliotekos algoritmas, naudojamas rūšiuoti konteinerio elementus nemažėjančia tvarka, išlaikant santykinę elementų tvarką konteineryje su tomis pačiomis reikšmėmis. Jis gali būti naudojamas su įvairiais konteineriais, pvz., masyvais, vektoriais ir susietais sąrašais. Be to, norint nurodyti elementų rūšiavimo tvarką, reikalingas trečiasis parametras.