Funktsiooni stable_sort() kasutamine C++-s

Funktsiooni Stable Sort Kasutamine C S



Jada elementide kindlas järjekorras sortimiseks on C++-s mitmesuguseid funktsioone. Sarnaselt sortimisfunktsioonile kasutatakse vahemiku (esimene, viimane) elementide sortimiseks funktsiooni stable_sort. Peamine erinevus nende vahel on see stabiilne_sort säilitab võrdsete väärtustega elementide suhtelise järjekorra.

Selles üksikasjalikus õpetuses näitame selle toimimist stabiilne_sort() keeles C++.

Funktsiooni stable_sort() kasutamine C++-s

C++ keeles on stabiilne_sort() on standardne teegi algoritm, mis järjestab elemendid kasvavas järjekorras ja säilitab samaväärsete elementide järjestuse. See tähendab, et kui kaks elementi on võrdsed, siis enne sortimist konteineris esimesena ilmuv element ilmub järjestatud loendis ikkagi esimesena. See funktsioon jagab konteinerit korduvalt (massiivid, vektorid, lingitud loendid), sorteerib need eraldi ja ühendab need seejärel sorteeritud konteineri saamiseks. See kuulub alla päisefail.







Üldine süntaks rakenduse kasutamiseks stabiilne_sort() C++ keeles on:



stabiilne_sort ( Esiteks RandomAccessIterator , RandomAccessIterator viimane ) ;

Siin, esiteks on iteraator, mis osutab sorditava vahemiku esimesele elemendile, ja viimane on iteraator, mis osutab elemendile pärast sortitava vahemiku viimast elementi.



The stabiilne_sort() funktsioon kasutab mittekahanevas järjestuses kirjete sortimiseks vahemikus [esimene, viimane], st väikseimast suurima elemendini. Funktsioon võrdleb vaikimisi üksusi läbi vähem kui operaator (<).





Näide 1

Mõelge allolevale näitekoodile, selles koodis oleme loonud vektorite loend ja initsialiseeris selle mõne väärtusega. Järgmisena kasutasime stabiilne_sort() antud vektori väärtuste järjestamiseks kasvavas järjekorras. Sorteerimata ja sorteeritud vektorid prinditakse konsoolile vahemikupõhise tsükli abil.

#include

#include

#include

kasutades nimeruumi std ;



int peamine ( )

{

vektor < int > nimekirja = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;

cout << 'Numbrid enne sortimist:' ;

igaühele ( nimekirja. alustada ( ) , nimekirja. lõpp ( ) , [ ] ( int x ) {

cout << x << ' ' ;

} ) ;

stabiilne_sort ( nimekirja. alustada ( ) , nimekirja. lõpp ( ) ) ;

cout << ' \n Numbrid pärast sorteerimist: ' ;

igaühele ( nimekirja. alustada ( ) , nimekirja. lõpp ( ) , [ ] ( int x ) {

cout << x << ' ' ;

} ) ;



tagasi 0 ;

}




Näide 2

Alltoodud näites oleme loonud täisarvu massiivi ja initsialiseerinud selle mõne väärtusega. Seejärel vaikimisi stabiilne_sort() sorteerib elemendid kasvavas järjekorras:

#include

#include

kasutades nimeruumi std ;

int peamine ( )

{

int massiivi [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

int n = suurus ( massiivi ) / suurus ( massiivi [ 0 ] ) ;

cout << 'Algne massiiv on: \n ' ;

jaoks ( int i = 0 ; i < n ; ++ i ) {

cout << massiivi [ i ] << ' ' ;

}

stabiilne_sort ( massiivi , massiivi + n ) ;

cout << ' \n Massiiv pärast sorteerimist on: \n ' ;

jaoks ( int i = 0 ; i < n ; ++ i ) {

cout << massiivi [ i ] << ' ' ;

}

tagasi 0 ;

}

Näide 3

The stabiilne_sort võtab kolmanda parameetri, et määrata elemendi sortimise järjekord. Allolevas näites oleme kasutanud suurem () funktsiooniga stabiilne_sort() massiivi elementide sorteerimiseks kahanevas järjekorras

#include

#include

kasutades nimeruumi std ;

int peamine ( )

{

int massiivi [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

int n = suurus ( massiivi ) / suurus ( massiivi [ 0 ] ) ;

cout << 'Originaalne massiiv: \n ' ;

jaoks ( int i = 0 ; i < n ; ++ i ) {

cout << massiivi [ i ] << ' ' ;

}

stabiilne_sort ( massiivi , massiivi + n , suurem < int > ( ) ) ;

cout << ' \n Massiiv pärast sorteerimist: \n ' ;

jaoks ( int i = 0 ; i < n ; ++ i ) {

cout << massiivi [ i ] << ' ' ;

}

tagasi 0 ;

}

Alumine joon

The stabiilne_sort() C++ funktsioon on standardne teegi algoritm, mida kasutatakse konteineris olevate elementide sortimiseks mittekahanevas järjekorras, säilitades samal ajal konteineris olevate elementide suhtelise järjekorra samade väärtustega. Seda saab kasutada erinevate konteineritega, nagu massiivid, vektorid ja lingitud loendid. Lisaks on vaja kolmandat parameetrit, et määrata elementide sortimise järjekord.