Classificando caracteres de uma string c ++

Classificando caracteres de uma string c ++
Em c++, cordas são matrizes de personagens. Ao processar uma string, podemos querer organizar os personagens nele. Para fazer isso, podemos usar vários Algoritmos de classificação Para atender às diferentes necessidades. Classificando personagens de uma string c ++ envolve substituir os caracteres dentro do corda, ou sequência de caracteres, em uma ordem predeterminada. Esta ordem é geralmente alfabética ou numérica, mas também pode ser determinada por outros Ordenação Critérios específicos para a tarefa de programação.

Os computadores processam seqüências de seqüências de operações no nível do caractere e as armazenam na memória, então qualquer Algoritmo de classificação deve considerar o fluxo de bytes dentro da corda, bem como suas relações numéricas ou alfabéticas. Este artigo cobrirá as etapas para implementar os algoritmos de classificação mais comuns para strings de C ++.

Classificando caracteres de uma string c ++

Existem cinco métodos para classificar uma string como dado:

  • Classificação de seleção
  • Classificação de inserção
  • Tipo de bolha
  • Ordenação rápida
  • Sort () função

1: classificação de seleção

Classificação de seleção é um algoritmo de classificação baseado em comparação que funciona dividindo a entrada em duas partes: um sublista de classificado personagens e um sublista de não triados personagens. O algoritmo então pesquisa o sublista não classificado pelo menor elemento e coloca o menor elemento no sublista de caracteres classificados. Continua esse processo até que toda a string seja classificada.

Implementar Classificação de seleção Em C ++, usaremos as seguintes etapas.

Passo 1: Crie um loop para começar com o índice de caracteres I igual a 0. O loop irá itera através da corda uma vez.

Passo 2: Defina o índice mínimo para eu.

Etapa 3: Crie um aninhado para loop que começa com o índice de caracteres J igual a i+1. O loop irá iterar através dos caracteres restantes na string.

Passo 4: Compare o personagem no índice I com o personagem no índice j. Se o caractere no índice J for menor que o caractere no índice I, definimos o índice mínimo como j.

Etapa 5: Após o aninhado por loop, trocamos o personagem no índice mínimo com o caractere no índice I.

Etapa 6: Repita as etapas 1-5 até chegarmos ao final da corda.

O programa de seleção é fornecido abaixo:

#incluir
#incluir
usando namespace std;
Void Selectionsort (String & S)
int len ​​= s.comprimento();
para (int i = 0; i< len-1; i++)
int minindex = i;
para (int j = i+1; j se (s [j] < s[minIndex])
minindex = j;


if (minindex != i)
troca (s [i], s [minindex]);



int main ()
string str = "Este é um algoritmo de classificação";
cout<< "Original string was: " << str <Seleção (STR);
cout<< "Sorted string is: " << str <retornar 0;

No código acima, uma referência de string é enviada para o Seleção função, que classifica a string no local. Ao iterar sobre a string da posição atual até o final, a função primeiro identifica o menor elemento na parte não classificada da corda. O elemento no local presente na string é trocado para o elemento mínimo depois de ter sido determinado. Este procedimento é repetido para cada elemento da string no loop externo da função até que toda a string seja organizada em ordem não reduzida.

Saída

2: Classificação de inserção

Classificação de inserção é outro algoritmo de classificação baseado em comparação e funciona dividindo a entrada em peças classificadas e não classificadas. O algoritmo então itera através da parte não classificada da entrada e adiciona o elemento à sua posição correta enquanto muda os elementos maiores para a direita. Para fazer isso, as seguintes etapas devem ser seguidas:

Passo 1: Crie um loop para começar com o índice de caracteres I igual a 1. O loop irá itera através da corda uma vez.

Passo 2: Defina a chave variável igual ao personagem no índice I.

Etapa 3: Crie um aninhado enquanto o loop começando com o índice de caracteres J igual. O loop irá itera através da parte classificada da string.

Passo 4: Compare o caractere no índice j com a chave variável. Se a chave variável for menor que o caractere no índice J, trocamos o caractere no índice j com o caractere no índice j+1. Em seguida, defina a variável J igual a J-1.

Etapa 5: Repita a etapa 4 até que J seja maior ou igual a 0 ou a chave variável é maior ou igual ao caractere no índice j.

Etapa 6: Repita as etapas 1-5 até chegarmos ao final da corda.

#incluir
#incluir
usando namespace std;
int main ()
string str;
cout<< "Original string was: " ;
getline (cin, str);
int length = str.comprimento();
for (int i = 1; i = 0 && str [j]> temp)
str [j + 1] = str [j];
J--;

str [j + 1] = temp;

cout<< "\nSorted string is: " << str << " \n";
retornar 0;

Estamos dividindo a matriz em sublistas classificados e não classificados neste pedaço de código. Os valores no componente não classificado são então comparados e são classificados antes de serem adicionados ao sublista classificado. O membro inicial da matriz classificada será considerado como um sublista classificado. Comparamos todos os elementos do sublista não classificado com todos os elementos do sublista classificado. Então, todos os componentes maiores são movidos para a direita.

Saída

3: Bolhas

Outra técnica de classificação direta é o Tipo de bolha, que alternam continuamente elementos próximos, se estiverem na ordem errada. No entanto, você deve primeiro compreender o tipo de bolha e como funciona. Quando a string a seguir é menor (a [i]> a [i+1]), as cordas vizinhas (a [i] e a [i+1]) são trocadas no processo de classificação de bolhas. Para classificar uma string usando Tipo de bolha Em C ++, siga estas etapas:

Passo 1: Solicite a entrada do usuário para uma matriz.

Passo 2: Mude os nomes das cordas usando 'StrCpy'.

Etapa 3: Um loop aninhado é usado para caminhar e comparar duas cordas.

Passo 4: Os valores são alterados se o valor ASCII de y for maior que Y+1 (as letras, dígitos e caracteres alocados aos códigos de 8 bits).

Etapa 5: A troca continua até que a condição retorne falsa.

A troca continua na etapa 5 até que a condição retorne falsa.

#incluir
#incluir
usando namespace std;
int main ()
Char Str [10] [15], arr [10];
int x, y;
cout<< "Enter Strings: ";
para (x = 0; x> str [x];

para (x = 1; x < 6; x++)
para (y = 1; y 0)
strcpy (arr, str [y - 1]);
strcpy (str [y - 1], str [y]);
strcpy (str [y], arr);



cout<< "\nAlphabetical order of Strings :\n";
para (x = 0; x < 6; x++)
cout<< Str[x] <cout<retornar 0;

O de cima Tipo de bolha programa Vamos utilizar uma matriz de personagens que pode segurar 6 Strings de personagem como entrada do usuário. O “Strcpy” Função tem sido usada onde os nomes das cordas são trocados em uma função aninhada. Na declaração IF, duas cordas são comparadas usando o “STRCMP” função. E uma vez que todas as cordas são comparadas, a saída é impressa na tela.

Saída

4: classificação rápida

O método de divisão e conquista é usado por Classificação rápida algoritmo recursivo para organizar os itens em uma determinada ordem. O método emprega a abordagem para dividir a mesma lista em dois com a ajuda do valor do pivô, que se pensa ser o primeiro membro idealmente, em vez de usar armazenamento adicional para os sublistas. Qualquer elemento pode ser escolhido, embora. Depois de chamadas para o ordenação rápida, A lista é dividida usando o ponto de partição.

Passo 1: Primeiro, digite uma string.

Passo 2: Declare a variável pivô e atribua -a ao caráter intermediário da string.

Etapa 3: Estabelecer os limites inferiores e mais altos da corda como as duas variáveis ​​baixas e altas, respectivamente.

Passo 4: Comece a dividir a lista em dois grupos, um com caracteres maiores que o elemento pivô e o outro com caracteres menores, usando um loop e troca de elementos no tempo.

Etapa 5: Execute recursivamente o algoritmo nas duas metades da sequência original para criar a string classificada.

#incluir
#incluir
#incluir
usando namespace std;
Void Quicksort (std :: string & str, int s, int e)
int st = s, end = e;
int pivot = str [(st + end) / 2];
fazer
enquanto (str [st] pivô)
fim--;
if (st<= end)
std :: swap (str [st], str [end]);
st ++;
fim--;

while (st<= end);
se (s < end)
Quicksort (str, s, final);

if (st< e)
Quicksort (str, st, e);


int main ()
std :: string str;
coutstr;
Quicksort (str, 0, (int) str.tamanho () - 1);
cout<< "The sorted string: " <

Neste código, estamos declarando as posições de início e final de duas variáveis ​​em 'começar' e 'fim' que será declarado em relação à corda do personagem. A matriz será dividida pela metade no ordenação rápida() função e, em seguida, usando um loop do dado-while, os itens serão alterados e o procedimento será repetido até que a string seja classificada. O ordenação rápida() a função será então chamada do principal() função e a string inserida pelo usuário será classificada e a saída será impressa na tela.

Saída

5: Função da biblioteca C ++

O organizar() A função é acessível em C ++ graças ao algoritmo de função da biblioteca integrado. Vamos fazer uma variedade de strings de nome e usar o embutido organizar() Método, que classificará as cordas usando o nome e o tamanho da matriz como argumentos. A sintaxe desta função é:

classificar (primeiro iterador, último iterador)

Onde os índices iniciais e finais da corda estão, respectivamente, o primeiro e o último iteradores.

Comparativamente falando, o uso desta função interno é mais rápido e mais fácil de concluir do que desenvolver seu próprio código. Apenas seqüências não espaçadas podem ser classificadas usando o organizar() Método, pois também emprega o algoritmo de classificação rápida para fazer isso.

#incluir
#incluir
usando namespace std;
int main ()
string str;
coutstr;
classificar (str.BEGIN (), STR.fim());
cout<< "The sorted string is: " <retornar 0;

Neste código, entraremos primeiro a uma sequência pelo usuário e, em seguida, a string será classificada usando o organizar() método e depois impresso na tela.

Saída

Conclusão

Quando Ordenação Um caractere em uma string c ++, o programador deve considerar o tipo de tipo de tipo de algoritmo apropriado à tarefa, bem como o tamanho da string. Dependendo do tamanho da corda, inserção, bolha, classificação de seleção, função de classificação ou classificação rápida () pode ser usada para classificar os caracteres. Depende da escolha do usuário, qual método eles querem escolher.