Tässä yksityiskohtaisessa opetusohjelmassa näytämme järjestelmän toiminnan vakaa_lajittelu() C++:ssa.
Stable_sort()-funktion käyttäminen C++:ssa
C++:ssa vakaa_lajittelu() on standardikirjastoalgoritmi, joka järjestää elementit kasvavaan järjestykseen ja säilyttää saman järjestyksen vastaaville elementeille. Tämä tarkoittaa, että jos kaksi elementtiä ovat yhtä suuret, elementti, joka näkyy ensin säilössä ennen lajittelua, näkyy silti ensimmäisenä lajitetussa luettelossa. Tämä toiminto toimii jakamalla säilön (taulukot, vektorit, linkitetyt luettelot) toistuvasti, lajittelemalla ne erikseen ja yhdistämällä ne, jotta saadaan lajiteltu säilö. Se tulee alle
Yleinen syntaksi vakaa_lajittelu() C++:ssa on:
vakaa_lajittelu ( RandomAccessIterator ensin , RandomAccessIterator viimeksi ) ;
Tässä, ensimmäinen on iteraattori, joka osoittaa lajiteltavan alueen ensimmäiseen elementtiin, ja kestää on iteraattori, joka osoittaa lajiteltavan alueen viimeisen elementin jälkeen olevaan elementtiin.
The vakaa_lajittelu() funktio käyttää ei-laskevaa järjestystä lajitellakseen merkinnät alueella [ensimmäinen, viimeinen], eli pienimmästä suurimpaan elementtiin. Toiminto oletusarvoisesti vertaa kohteita läpi pienempi kuin operaattori (<).
Esimerkki 1
Harkitse alla olevaa esimerkkikoodia, tässä koodissa olemme luoneet vektoriluettelo ja alustanut sen joillakin arvoilla. Seuraavaksi käytimme vakaa_lajittelu() lajitella annetun vektorin arvot nousevaan järjestykseen. Lajittelemattomat ja lajitellut vektorit tulostetaan konsoliin käyttämällä aluepohjaista silmukkaa.
#include#sisällytä
#include
käyttämällä nimiavaruutta std ;
int pää ( )
{
vektori < int > lista = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;
cout << 'Numerot ennen lajittelua:' ;
jokaiselle ( lista. alkaa ( ) , lista. loppu ( ) , [ ] ( int x ) {
cout << x << ' ' ;
} ) ;
vakaa_lajittelu ( lista. alkaa ( ) , lista. loppu ( ) ) ;
cout << ' \n Numerot lajittelun jälkeen: ' ;
jokaiselle ( lista. alkaa ( ) , lista. loppu ( ) , [ ] ( int x ) {
cout << x << ' ' ;
} ) ;
palata 0 ;
}
Esimerkki 2
Alla olevassa esimerkissä olemme luoneet kokonaislukutaulukon ja alustaneet sen joillakin arvoilla. Sitten oletusarvoisesti vakaa_lajittelu() lajittelee elementit nousevaan järjestykseen:
#include#include
käyttämällä nimiavaruutta std ;
int pää ( )
{
int joukko [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
int n = koko ( joukko ) / koko ( joukko [ 0 ] ) ;
cout << 'Alkuperäinen taulukko on: \n ' ;
varten ( int i = 0 ; i < n ; ++ i ) {
cout << joukko [ i ] << ' ' ;
}
vakaa_lajittelu ( joukko , joukko + n ) ;
cout << ' \n Taulukko lajittelun jälkeen on: \n ' ;
varten ( int i = 0 ; i < n ; ++ i ) {
cout << joukko [ i ] << ' ' ;
}
palata 0 ;
}
Esimerkki 3
The vakaa_lajittelu ottaa kolmannen parametrin määrittääkseen elementin lajittelujärjestyksen. Alla olevassa esimerkissä olemme käyttäneet suurempi () funktio kanssa vakaa_lajittelu() järjestääksesi taulukon elementit laskevaan järjestykseen
#include#include
käyttämällä nimiavaruutta std ;
int pää ( )
{
int joukko [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
int n = koko ( joukko ) / koko ( joukko [ 0 ] ) ;
cout << 'Alkuperäinen taulukko: \n ' ;
varten ( int i = 0 ; i < n ; ++ i ) {
cout << joukko [ i ] << ' ' ;
}
vakaa_lajittelu ( joukko , joukko + n , suurempi < int > ( ) ) ;
cout << ' \n Taulukko lajittelun jälkeen: \n ' ;
varten ( int i = 0 ; i < n ; ++ i ) {
cout << joukko [ i ] << ' ' ;
}
palata 0 ;
}
Bottom Line
The vakaa_lajittelu() Funktio C++:ssa on standardikirjastoalgoritmi, jota käytetään lajittelemaan säilön elementit ei-laskevaan järjestykseen säilyttäen samalla säilön elementtien suhteellinen järjestys samoilla arvoilla. Sitä voidaan käyttää eri säilöissä, kuten taulukoissa, vektoreissa ja linkitetyissä luetteloissa. Lisäksi tarvitaan kolmas parametri elementtien lajittelujärjestyksen määrittämiseen.