Como usar a função stable_sort() em C++

Como Usar A Funcao Stable Sort Em C



Existem várias funções em C++ para classificar os elementos da sequência em uma ordem específica. Semelhante à função de classificação, o stable_sort é usado para classificar os elementos no intervalo (primeiro, último). A principal diferença entre eles é que o classificação_estável mantém a ordem relativa dos elementos com valores iguais.

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 arquivo de cabeçalho.







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.