Tri des caractères d'une chaîne C ++

Tri des caractères d'une chaîne C ++
En c++, cordes sont des tableaux de personnages. Lors du traitement d'une chaîne, nous voulons peut-être vouloir trier les personnages dedans. Pour ce faire, nous pouvons utiliser divers Tri des algorithmes pour répondre à différents besoins. Trier les personnages d'une chaîne C ++ implique de remplacer les caractères dans le chaîne, ou séquence de caractères, dans un ordre prédéterminé. Cet ordre est généralement alphabétique ou numérique mais pourrait également être déterminé par d'autres tri critères spécifiques à la tâche de programmation.

Les ordinateurs traitent les chaînes dans les opérations au niveau des caractères et les stockent en mémoire, donc n'importe quel algorithme de tri doit considérer le flux d'octets dans la chaîne, ainsi que leurs relations numériques ou alphabétiques. Cet article couvrira les étapes pour implémenter les algorithmes de tri les plus courants pour les chaînes C ++.

Tri des caractères d'une chaîne C ++

Il existe cinq méthodes pour trier une chaîne comme indiqué:

  • Tri de sélection
  • Tri par insertion
  • Tri bulle
  • Tri rapide
  • Fonction Sult ()

1: tri de sélection

Tri de sélection est un algorithme de tri basé sur une comparaison qui fonctionne en divisant l'entrée en deux parties: un subliste de trié personnages et un subliste de non trié personnages. L'algorithme recherche ensuite le subliste non triée pour le plus petit élément et place le plus petit élément du subliste des personnages triés. Il continue ce processus jusqu'à ce que toute la chaîne soit triée.

Implémenter tri de sélection En C ++, nous utiliserons les étapes suivantes.

Étape 1: Créez une boucle pour l'index de caractère I égal à 0. La boucle iratera à travers la chaîne une fois.

Étape 2: Définissez l'index minimum sur i.

Étape 3: Créez une boucle imbriquée en commençant par l'indice de caractère j égal à i + 1. La boucle iratera à travers les caractères restants de la chaîne.

Étape 4: Comparez le personnage de l'index I avec le personnage de l'index J. Si le personnage de l'index J est inférieur au caractère de l'index I, nous définissons l'index minimum sur J.

Étape 5: Après la boucle imbriquée, nous échangeons le personnage à un index minimum avec le personnage à l'index I.

Étape 6: Répétez les étapes 1-5 jusqu'à ce que nous atteignions la fin de la chaîne.

Le programme pour le tri de sélection est donné ci-dessous:

#inclure
#inclure
Utilisation de Namespace Std;
void sectionsort (string & s)
int len ​​= s.longueur();
pour (int i = 0; i< len-1; i++)
int minindex = i;
pour (int j = i + 1; j if (s [j] < s[minIndex])
minindex = j;


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



int main()
String str = "Ceci est un algorithme de tri";
couter<< "Original string was: " << str <SELECTIONATORT (STR);
couter<< "Sorted string is: " << str <retour 0;

Dans le code ci-dessus, une référence de chaîne est envoyée dans le SELECTIONNTORT fonction, qui trie la chaîne en place. En itérant sur la chaîne de la position actuelle à la fin, la fonction identifie d'abord le moins d'élément de la partie non triée de la chaîne. L'élément à l'endroit actuel de la chaîne est commuté pour l'élément minimal une fois qu'il a été déterminé. Cette procédure est répétée pour chaque élément de la chaîne dans la boucle extérieure de la fonction jusqu'à ce que la chaîne entière soit disposée en ordre non décroissante.

Sortir

2: tri d'insertion

Tri par insertion est un autre algorithme de tri basé sur une comparaison et fonctionne en divisant l'entrée en pièces triées et non triées. L'algorithme itère ensuite à travers la partie non triée de l'entrée et ajoute l'élément dans sa position correcte tout en déplaçant les éléments plus grands vers la droite. Pour ce faire, les étapes suivantes doivent être suivies:

Étape 1: Créer une boucle pour l'index de caractère I égal à 1. La boucle iratera à travers la chaîne une fois.

Étape 2: Définissez la clé variable égale au caractère à l'index I.

Étape 3: Créez une boucle imbriquée en commençant par l'indice de caractère j égal à i-1. La boucle iratera à travers la partie triée de la chaîne.

Étape 4: Comparez le caractère à Index J avec la clé variable. Si la clé variable est inférieure au caractère de l'index j, nous échangeons le caractère à l'index j avec le caractère à index j + 1. Ensuite, définissez la variable J égale à J-1.

Étape 5: Répétez l'étape 4 jusqu'à ce que j soit supérieur ou égal à 0 ou que la clé variable est supérieure ou égale au caractère à l'index j.

Étape 6: Répétez les étapes 1-5 jusqu'à ce que nous atteignions la fin de la chaîne.

#inclure
#inclure
Utilisation de Namespace Std;
int main()
String Str;
couter<< "Original string was: " ;
Getline (Cin, Str);
int le long = str.longueur();
pour (int i = 1; i = 0 && str [j]> temp)
str [j + 1] = str [j];
J-;

str [j + 1] = temp;

couter<< "\nSorted string is: " << str << " \n";
retour 0;

Nous divisons le tableau en sublilistes triés et non triés dans ce morceau de code. Les valeurs dans le composant non triées sont ensuite comparées, et elles sont triées avant d'être ajoutées à la subliste triée. Le membre initial du tableau trié sera considéré comme un subliste trié. Nous comparons chaque élément du subliste non triée à chaque élément du subliste trié. Ensuite, tous les plus grands composants sont déplacés vers la droite.

Sortir

3: tri de bulles

Une autre technique de tri simple est le tri bulle, qui change continuellement des éléments à proximité s'ils sont dans le mauvais ordre. Néanmoins, vous devez d'abord comprendre ce qu'est le genre de bulles et comment il fonctionne. Lorsque la chaîne suivante est plus petite (a [i]> a [i + 1]), les chaînes voisines (a [i] et a [i + 1]) sont commutées dans le processus de tri des bulles. Pour trier une chaîne en utilisant tri bulle En C ++, suivez ces étapes:

Étape 1: Demander une entrée utilisateur pour un tableau.

Étape 2: Changer les noms des chaînes en utilisant 'strcpy'.

Étape 3: Une boucle imbriquée est utilisée pour marcher et comparer deux cordes.

Étape 4: Les valeurs sont commutées si la valeur ASCII de Y est supérieure à Y + 1 (les lettres, chiffres et caractères alloués aux codes 8 bits).

Étape 5: L'échange continue jusqu'à ce que la condition retourne fausse.

L'échange se poursuit à l'étape 5 jusqu'à ce que la condition retourne fausse.

#inclure
#inclure
Utilisation de Namespace Std;
int main()
Char Str [10] [15], arr [10];
int x, y;
couter<< "Enter Strings: ";
pour (x = 0; x> str [x];

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



couter<< "\nAlphabetical order of Strings :\n";
pour (x = 0; x < 6; x++)
couter<< Str[x] <couter<retour 0;

Ce qui précède Tri bulle programme que nous utiliserons un tableau de caractères qui peut contenir 6 chaînes de caractères comme entrée utilisateur. Le "Strcpy" La fonction a été utilisée lorsque les noms des chaînes sont échangés dans une fonction imbriquée. Dans l'instruction if, deux chaînes sont comparées en utilisant le "Strcmp" fonction. Et une fois toutes les chaînes comparées, la sortie est imprimée à l'écran.

Sortir

4: Sort rapide

La méthode de division et de conquér est utilisée par Sort rapide Algorithme récursif pour organiser les articles dans un certain ordre. La méthode utilise l'approche pour diviser la même liste en deux à l'aide de la valeur de pivot, qui est considérée comme le premier membre idéalement, plutôt que d'utiliser un stockage supplémentaire pour les sublilistes. Tout élément peut être choisi, cependant. Après les appels au tri rapide, La liste est divisée en utilisant le point de partition.

Étape 1: Tout d'abord, entrez une chaîne.

Étape 2: Déclarez la variable de pivot et affectez-la au caractère moyen de la chaîne.

Étape 3: Établir les limites inférieures et supérieures de la corde comme les deux variables bas et haut, respectivement.

Étape 4: Commencez à diviser la liste en deux groupes, l'un avec des caractères plus grands que l'élément Pivot et l'autre avec des caractères plus petits, en utilisant une boucle et un échange d'éléments WHI.

Étape 5: Exécutez récursivement l'algorithme sur les deux moitiés de la chaîne d'origine pour créer la chaîne triée.

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
void Quicksort (std :: string & str, int s, int e)
int st = s, end = e;
int pivot = str [(st + end) / 2];
faire
tandis que (str [st] pivot)
fin--;
si (st<= end)
std :: swap (str [st], str [end]);
st ++;
fin--;

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

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


int main()
std :: string str;
Coutstr;
Quicksort (str, 0, (int) str.size () - 1);
couter<< "The sorted string: " <

Dans ce code, nous déclarons les positions de début et de fin de deux variables sous 'commencer' et 'fin' qui sera déclaré par rapport à la chaîne de caractères. Le tableau sera divisé en deux dans le tri rapide() fonction, puis à l'aide d'une boucle de bricolage, les éléments seront commutés et la procédure sera répétée jusqu'à ce que la chaîne soit triée. Le tri rapide() La fonction sera alors appelée à partir du principal() La fonction et la chaîne entrée par l'utilisateur seront triées et la sortie sera imprimée à l'écran.

Sortir

5: Fonction de bibliothèque C ++

Le trier() La fonction est accessible en C ++ grâce à l'algorithme de fonction de bibliothèque intégrée. Nous ferons une gamme de chaînes de noms et utiliserons le intégré trier() Méthode, qui triera les chaînes en utilisant le nom et la taille du tableau comme arguments. La syntaxe de cette fonction est:

Trier (premier itérateur, dernier itérateur)

où les indices de début et de fin de la chaîne sont respectivement les premier et les derniers itérateurs.

Comparativement parlant, l'utilisation de cette fonction intégrée est plus rapide et plus facile à compléter que de développer votre propre code. Seules les chaînes non espacées peuvent être triées en utilisant le trier() Méthode car elle utilise également l'algorithme de tri rapide pour le faire.

#inclure
#inclure
Utilisation de Namespace Std;
int main()
String Str;
Coutstr;
trier (str.begin (), str.fin());
couter<< "The sorted string is: " <retour 0;

Dans ce code, nous allons d'abord entrer une chaîne par l'utilisateur, puis la chaîne sera triée à l'aide du trier() Méthode puis imprimée sur l'écran.

Sortir

Conclusion

Quand tri Un caractère dans une chaîne C ++, le programmeur doit considérer l'algorithme de type de type approprié à la tâche, ainsi que la taille de la chaîne. Selon la taille de la chaîne, l'insertion, la bulle, le tri de sélection, la fonction rapide ou tri () peuvent être utilisées pour trier les caractères. Cela dépend du choix de l'utilisateur, quelle méthode ils souhaitent choisir.