Neste tutorial de detalhes, mostraremos o funcionamento do stable_sort() em C++.
Como usar a função stable_sort() em C++
Em C++, o stable_sort() é um algoritmo de biblioteca padrão que organiza os elementos em ordem crescente e mantém a mesma ordem para os elementos equivalentes. Isso significa que, se dois elementos forem iguais, o elemento que aparecer primeiro no contêiner antes da classificação ainda aparecerá primeiro na lista classificada. Essa função funciona dividindo repetidamente o contêiner (arrays, vetores, listas encadeadas), classificando-os separadamente e, em seguida, mesclando-os para obter o contêiner classificado. Ele vem sob o
A sintaxe geral para usar o stable_sort() em C++ é:
classificação_estável ( RandomAccessIterator primeiro , RandomAccessIterator último ) ;
Aqui o primeiro é o iterador que aponta para o primeiro elemento no intervalo a ser classificado e o durar é o iterador que aponta para o elemento após o último elemento no intervalo a ser classificado.
O stable_sort() A função usa ordem não decrescente para classificar as entradas no intervalo [primeiro, último], ou seja, do menor para o maior elemento. A função por padrão compara os itens através do operador menor que (<).
Exemplo 1
Considere o código de exemplo abaixo, neste código, criamos o lista de vetores e inicializou-o com alguns valores. A seguir, utilizamos o stable_sort() para classificar os valores do vetor fornecido em ordem crescente. Os vetores não classificados e classificados são impressos no console usando o loop baseado em intervalo.
#include#include
#include
usando namespace std ;
int principal ( )
{
vetor < int > lista = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;
cout << 'Números antes de ordenar: ' ;
para cada ( lista. começar ( ) , lista. fim ( ) , [ ] ( int x ) {
cout << x << ' ' ;
} ) ;
classificação_estável ( lista. começar ( ) , lista. fim ( ) ) ;
cout << ' \n Números após a classificação: ' ;
para cada ( lista. começar ( ) , lista. fim ( ) , [ ] ( int x ) {
cout << x << ' ' ;
} ) ;
retornar 0 ;
}
Exemplo 2
No exemplo abaixo, criamos um array inteiro e o inicializamos com alguns valores. Então, por padrão, o stable_sort() classifica os elementos em ordem crescente:
#include#include
usando namespace std ;
int principal ( )
{
int variedade [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
int n = tamanho de ( variedade ) / tamanho de ( variedade [ 0 ] ) ;
cout << 'Matriz original é: \n ' ;
para ( int eu = 0 ; eu < n ; ++ eu ) {
cout << variedade [ eu ] << ' ' ;
}
classificação_estável ( variedade , variedade + n ) ;
cout << ' \n Array após a classificação é: \n ' ;
para ( int eu = 0 ; eu < n ; ++ eu ) {
cout << variedade [ eu ] << ' ' ;
}
retornar 0 ;
}
Exemplo 3
O classificação_estável usa o terceiro parâmetro para especificar a ordem de classificação do elemento. No exemplo abaixo, usamos o maior() função com stable_sort() para classificar os elementos do array em ordem decrescente
#include#include
usando namespace std ;
int principal ( )
{
int variedade [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;
int n = tamanho de ( variedade ) / tamanho de ( variedade [ 0 ] ) ;
cout << 'Matriz original: \n ' ;
para ( int eu = 0 ; eu < n ; ++ eu ) {
cout << variedade [ eu ] << ' ' ;
}
classificação_estável ( variedade , variedade + n , maior < int > ( ) ) ;
cout << ' \n Matriz após a classificação: \n ' ;
para ( int eu = 0 ; eu < n ; ++ eu ) {
cout << variedade [ eu ] << ' ' ;
}
retornar 0 ;
}
Conclusão
O stable_sort() A função em C++ é um algoritmo de biblioteca padrão usado para classificar elementos em um contêiner em ordem não decrescente, mantendo a ordem relativa dos elementos em um contêiner com os mesmos valores. Ele pode ser usado com diferentes contêineres, como matrizes, vetores e listas encadeadas. Além disso, é necessário um terceiro parâmetro para especificar a ordem de classificação dos elementos.