V tomto podrobném tutoriálu si ukážeme fungování stable_sort() v C++.
Jak používat funkci stable_sort() v C++
V C++ je stable_sort() je standardní algoritmus knihovny, který uspořádává prvky ve vzrůstajícím pořadí a zachovává stejné pořadí pro ekvivalentní prvky. To znamená, že pokud jsou dva prvky stejné, prvek, který se objeví jako první v kontejneru před řazením, se stále objeví jako první v seřazeném seznamu. Tato funkce funguje tak, že opakovaně rozděluje kontejner (pole, vektory, propojené seznamy), třídí je samostatně a poté je spojuje, aby se získal setříděný kontejner. Spadá pod
Obecná syntaxe pro použití stable_sort() v C++ je:
stable_sort ( RandomAccessIterator jako první , RandomAccessIterator jako poslední ) ;
Tady, První je iterátor ukazující na první prvek v rozsahu, který má být seřazen, a poslední je iterátor ukazující na prvek za posledním prvkem v rozsahu, který má být seřazen.
The stable_sort() Funkce používá neklesající pořadí k řazení položek v rozsahu [první, poslední], tj. od nejmenšího po největší prvek. Funkce ve výchozím nastavení porovnává položky prostřednictvím operátor menší než (<).
Příklad 1
Zvažte níže uvedený příklad kódu, v tomto kódu jsme vytvořili vektorový seznam a inicializoval jej s některými hodnotami. Dále jsme použili stable_sort() seřadit hodnoty daného vektoru ve vzestupném pořadí. Netříděné a seřazené vektory jsou vytištěny na konzole pomocí smyčky založené na rozsahu.
#include#include
#include
pomocí jmenného prostoru std ;
int hlavní ( )
{
vektor < int > seznam = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;
cout << 'Čísla před řazením:' ;
pro každého ( seznam. začít ( ) , seznam. konec ( ) , [ ] ( int X ) {
cout << X << '' ;
} ) ;
stable_sort ( seznam. začít ( ) , seznam. konec ( ) ) ;
cout << ' \n Čísla po seřazení: ' ;
pro každého ( seznam. začít ( ) , seznam. konec ( ) , [ ] ( int X ) {
cout << X << '' ;
} ) ;
vrátit se 0 ;
}
Příklad 2
V níže uvedeném příkladu jsme vytvořili celočíselné pole a inicializovali jej s některými hodnotami. Poté ve výchozím nastavení stable_sort() seřadí prvky ve vzestupném pořadí:
#include#include
pomocí jmenného prostoru std ;
int hlavní ( )
{
int pole [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
int n = velikost ( pole ) / velikost ( pole [ 0 ] ) ;
cout << 'Původní pole je: \n ' ;
pro ( int i = 0 ; i < n ; ++ i ) {
cout << pole [ i ] << '' ;
}
stable_sort ( pole , pole + n ) ;
cout << ' \n Pole po třídění je: \n ' ;
pro ( int i = 0 ; i < n ; ++ i ) {
cout << pole [ i ] << '' ;
}
vrátit se 0 ;
}
Příklad 3
The stable_sort bere třetí parametr k určení pořadí pro řazení prvku. V níže uvedeném příkladu jsme použili větší() funkce s stable_sort() seřadit prvky pole v sestupném pořadí
#include#include
pomocí jmenného prostoru std ;
int hlavní ( )
{
int pole [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
int n = velikost ( pole ) / velikost ( pole [ 0 ] ) ;
cout << 'Původní pole: \n ' ;
pro ( int i = 0 ; i < n ; ++ i ) {
cout << pole [ i ] << '' ;
}
stable_sort ( pole , pole + n , větší < int > ( ) ) ;
cout << ' \n Pole po třídění: \n ' ;
pro ( int i = 0 ; i < n ; ++ i ) {
cout << pole [ i ] << '' ;
}
vrátit se 0 ;
}
Sečteno a podtrženo
The stable_sort() funkce v C++ je standardní knihovní algoritmus používaný k řazení prvků v kontejneru v neklesajícím pořadí při zachování relativního pořadí prvků v kontejneru se stejnými hodnotami. Lze jej použít s různými kontejnery, jako jsou pole, vektory a propojené seznamy. Navíc je potřeba třetí parametr k určení pořadí pro řazení prvků.