Ordinamento dei caratteri di una stringa C ++

Ordinamento dei caratteri di una stringa C ++
In c++, stringhe sono array di caratteri. Durante l'elaborazione di una stringa, potremmo volerlo ordinare i personaggi in esso. Per fare questo, possiamo usare vari Algoritmi di smistamento Per soddisfare le diverse esigenze. Sorting dei personaggi di una stringa C ++ comporta la sostituzione dei caratteri all'interno del corda, o sequenza di caratteri, in un ordine predeterminato. Questo ordine è generalmente alfabetico o numerico ma potrebbe anche essere determinato da altri ordinamento criteri specifici dell'attività di programmazione.

I computer elaborano stringhe in operazioni a livello di personaggio e li archiviano in memoria, quindi qualsiasi Algoritmo di smistamento deve considerare il flusso di byte all'interno della stringa, nonché le loro relazioni numeriche o alfabetiche. Questo articolo coprirà i passaggi per implementare gli algoritmi di smistamento più comuni per le stringhe C ++.

Ordinamento dei caratteri di una stringa C ++

Esistono cinque metodi per ordinare una stringa come indicata:

  • Ordine di selezione
  • Ordinamento di inserzione
  • Bolle Ord
  • Ordine rapida
  • Ordine () funzione

1: ordinamento di selezione

Ordine di selezione è un algoritmo di smistamento basato sul confronto che funziona dividendo l'input in due parti: un sublist di smistato personaggi e un sublist di Unsorted caratteri. L'algoritmo cerca quindi il sublist non richiesto l'elemento più piccolo e posiziona l'elemento più piccolo nel sublist di personaggi ordinati. Continua questo processo fino a quando l'intera stringa non viene ordinata.

Implementare Ordine di selezione In C ++ useremo i seguenti passaggi.

Passo 1: Crea un loop per iniziare con l'indice del carattere I uguale a 0. Il ciclo iterirà attraverso la stringa una volta.

Passo 2: Imposta l'indice minimo su i.

Passaggio 3: Crea un ciclo nidificato a partire dall'indice del carattere j uguale a i+1. Il ciclo iterirà attraverso i personaggi rimanenti nella stringa.

Passaggio 4: Confronta il carattere all'indice i con il carattere all'indice j. Se il carattere all'indice j è inferiore al carattere all'indice i, impostiamo l'indice minimo su J.

Passaggio 5: Dopo il nidificato per loop, scambiamo il carattere al minimo indice con il carattere all'indice i.

Passaggio 6: Ripeti i passaggi 1-5 fino a raggiungere la fine della stringa.

Il programma per l'ordinamento di selezione è riportato di seguito:

#includere
#includere
Utilizzo dello spazio dei nomi std;
void SelectionSort (String & S)
int len ​​= s.lunghezza();
per (int i = 0; i< len-1; i++)
int minindex = i;
per (int j = i+1; j if (s [j] < s[minIndex])
minindex = j;


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



int main ()
string Str = "Questo è un algoritmo di ordinamento";
cout<< "Original string was: " << str <Selectionsort (STR);
cout<< "Sorted string is: " << str <restituzione 0;

Nel codice sopra, un riferimento di stringa viene inviato in Selectionsort funzione, che ordina la stringa sul posto. Iterato sulla stringa dalla posizione corrente all'estremità, la funzione identifica innanzitutto il minimo elemento nella parte non desiderata della stringa. L'elemento nel presente luogo nella stringa viene spento per l'elemento minimo dopo che è stato determinato. Questa procedura viene ripetuta per ciascun elemento della stringa nel ciclo esterno della funzione fino a quando l'intera stringa non è disposta in ordine non decrescente.

Produzione

2: ordinamento di inserzione

Ordinamento di inserzione è un altro algoritmo di smistamento basato sul confronto e funziona dividendo l'input in parti ordinate e non mobili. L'algoritmo quindi si itera attraverso la parte non desiderata dell'input e aggiunge l'elemento nella sua posizione corretta mentre si sposta gli elementi più grandi verso destra. Per fare ciò, dovrebbero essere seguiti i seguenti passaggi:

Passo 1: Crea un loop per iniziare con l'indice del carattere I pari a 1. Il ciclo iterirà attraverso la stringa una volta.

Passo 2: Imposta la chiave variabile uguale al carattere all'indice i.

Passaggio 3: Crea un ciclo nidificato a partire dall'indice del carattere j uguale a i-1. Il ciclo iterirà attraverso la parte ordinata della stringa.

Passaggio 4: Confronta il carattere all'indice j con la chiave variabile. Se la chiave variabile è inferiore al carattere all'indice j, scambiamo il carattere su indice j con il carattere all'indice j+1. Quindi, imposta la variabile J uguale a J-1.

Passaggio 5: Ripetere il passaggio 4 fino a quando J è maggiore o uguale a 0 o la chiave variabile è maggiore o uguale al carattere all'indice j.

Passaggio 6: Ripeti i passaggi 1-5 fino a raggiungere la fine della stringa.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
String STR;
cout<< "Original string was: " ;
getline (CIN, STR);
int lunghezza = str.lunghezza();
per (int i = 1; i = 0 && str [j]> temp)
str [j + 1] = str [j];
J--;

str [j + 1] = temp;

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

Stiamo dividendo l'array in sublisti ordinati e non mozzafiato in questo pezzo di codice. Vengono quindi confrontati i valori nel componente non prestito e vengono ordinati prima di essere aggiunti al sublist ordinato. Il membro iniziale dell'array ordinato sarà considerato un sublist ordinato. Confrontiamo ogni elemento nel sublist non desiderato con ogni elemento nel sublist ordinato. Quindi, tutti i componenti più grandi vengono spostati a destra.

Produzione

3: ordinamento a bolle

Un'altra tecnica di smistamento semplice è il Bolle Ord, che cambia continuamente elementi vicini se sono nell'ordine sbagliato. Tuttavia, devi prima capire quale sia la bolle e come funziona. Quando la seguente stringa è più piccola (a [i]> a [i+1]), le stringhe vicine (a [i] e a [i+1]) sono commutate nel processo di ordinamento delle bolle. Per ordinare una stringa usando Bolle Ord In C ++, segui questi passaggi:

Passo 1: Richiedi input dell'utente per un array.

Passo 2: Cambia i nomi delle corde usando 'strcpy'.

Passaggio 3: Un anello nidificato viene utilizzato per camminare e confrontare due stringhe.

Passaggio 4: I valori sono commutati se il valore ASCII di Y è maggiore di y+1 (lettere, cifre e caratteri allocati ai codici a 8 bit).

Passaggio 5: Lo scambio continua fino a quando la condizione non restituisce false.

Lo scambio continua al passaggio 5 fino a quando la condizione non restituisce false.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
Char Str [10] [15], arr [10];
int x, y;
cout<< "Enter Strings: ";
per (x = 0; x> str [x];

per (x = 1; x < 6; x++)
per (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";
per (x = 0; x < 6; x++)
cout<< Str[x] <cout<restituzione 0;

Quanto sopra Bolle Ord Programma utilizzeremo un array di caratteri che può contenere 6 stringhe di caratteri come input dell'utente. IL "Strcpy" La funzione è stata utilizzata in cui i nomi delle stringhe sono scambiati in una funzione nidificata. Nell'istruzione IF, due stringhe vengono confrontate usando il "Strcmp" funzione. E una volta confrontate tutte le stringhe, l'uscita viene stampata sullo schermo.

Produzione

4: Ordine rapida

Il metodo di divisione e conquista è utilizzato da Ordine rapida Algoritmo ricorsivo per organizzare gli articoli in un determinato ordine. Il metodo impiega l'approccio per dividere lo stesso elenco in due con l'aiuto del valore pivot, che si ritiene sia il primo membro idealmente, piuttosto che utilizzare l'archiviazione aggiuntiva per i sublisti. Qualsiasi elemento può essere scelto, però. Dopo chiamate a Ordine rapida, L'elenco è diviso usando il punto di partizione.

Passo 1: Innanzitutto, immettere una stringa.

Passo 2: Dichiarare la variabile pivot e assegnarla al carattere centrale della stringa.

Passaggio 3: Stabilire i confini più bassi e più alti della stringa come le due variabili basse e alte, rispettivamente.

Passaggio 4: Inizia a dividere l'elenco in due gruppi, uno con caratteri più grandi dell'elemento pivot e l'altro con caratteri più piccoli, usando un cambio di loop e elemento.

Passaggio 5: Eseguire ricorsivamente l'algoritmo sulle due metà della stringa originale per creare la stringa ordinata.

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
void QuickSort (std :: String & Str, int s, int e)
int st = s, end = e;
int pivot = str [(st + end) / 2];
Fare
while (str [st] pivot)
FINE--;
Se (st<= end)
std :: swap (str [st], str [end]);
ST ++;
FINE--;

while (st<= end);
Se (s < end)
QuickSort (STR, S, End);

Se (st< e)
QuickSort (STR, ST, E);


int main ()
Std :: String Str;
Coutstr;
QuickSort (STR, 0, (int) STR.size () - 1);
cout<< "The sorted string: " <

In questo codice, stiamo dichiarando le posizioni di inizio e fine di due variabili sotto 'inizio' E 'FINE' che sarà dichiarato relativo alla stringa del personaggio. L'array sarà diviso a metà nel QuickSort () funzione, quindi utilizzando un ciclo do-while, gli elementi verranno commutati e la procedura verrà ripetuta fino a quando la stringa non viene ordinata. IL QuickSort () La funzione verrà quindi chiamata dal principale() funzione e la stringa inserita dall'utente verrà ordinata e l'uscita verrà stampata sullo schermo.

Produzione

5: funzione libreria C ++

IL ordinare() La funzione è accessibile in C ++ grazie all'algoritmo di funzione della libreria integrata. Faremo una serie di stringhe di nome e useremo il integrato ordinare() Metodo, che ordinerà le stringhe usando il nome e le dimensioni dell'array come argomenti. La sintassi di questa funzione è:

Ordina (primo iteratore, ultimo iteratore)

Dove gli indici iniziali e finali della stringa sono, rispettivamente, il primo e l'ultimo iteratore.

Comparativamente parlando, l'utilizzo di questa funzione integrata è più veloce e più facile da completare rispetto allo sviluppo del tuo codice. Solo le stringhe non spaziate possono essere ordinate usando il ordinare() metodo in quanto impiega anche l'algoritmo di ordinamento rapido per farlo.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
String STR;
Coutstr;
Ordina (str.inizio (), str.FINE());
cout<< "The sorted string is: " <restituzione 0;

In questo codice, inseriremo prima una stringa dall'utente, quindi la stringa verrà ordinata utilizzando il ordinare() metodo e quindi stampato sullo schermo.

Produzione

Conclusione

Quando ordinamento Un carattere in una stringa C ++, il programmatore deve considerare il tipo di algoritmo di ordinamento appropriato all'attività, nonché la dimensione della stringa. A seconda delle dimensioni della stringa, dell'inserimento, della bolle, dell'ordinamento di selezione, dell'ordinamento rapido o dell'ordinamento () può essere utilizzato per ordinare i caratteri. Dipende dalla scelta dell'utente, quale metodo desidera scegliere.