Š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 į
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.