Zeichen einer C ++ - Zeichenfolge sortieren

Zeichen einer C ++ - Zeichenfolge sortieren
In c++, Saiten sind Arrays von Zeichen. Bei der Verarbeitung einer Zeichenfolge möchten wir vielleicht Sortieren die Charaktere darin. Dazu können wir verschiedene verwenden Sortieren von Algorithmen verschiedene Bedürfnisse erfüllen. Zeichen sortieren von einer C ++ - String beinhaltet das Ersetzen der Zeichen innerhalb der Saite, oder Abfolge von Zeichen in einer vorgegebenen Reihenfolge. Diese Reihenfolge ist normalerweise alphabetisch oder numerisch, kann aber auch von anderen bestimmt werden Sortierung Kriterien spezifisch für die Programmieraufgabe.

Computer verarbeiten Zeichenfolgen in Vorgängen auf Zeichenebene und speichern sie im Speicher, also alle Sortieren von Algorithmus Muss den Fluss von Bytes innerhalb der Saite sowie deren numerische oder alphabetische Beziehungen berücksichtigen. In diesem Artikel werden die Schritte zur Implementierung der häufigsten Sortieralgorithmen für C ++ - Strings behandelt.

Zeichen einer C ++ - Zeichenfolge sortieren

Es gibt fünf Methoden, um eine Zeichenfolge wie angegeben zu sortieren:

  • Auswahlsart
  • Sortieren durch Einfügen
  • Blasenart
  • Schnelle Sorte
  • Sort () Funktion

1: Sortierung der Auswahl

Auswahlsart ist ein vergleichsbasierter Sortieralgorithmus, der die Eingabe in zwei Teile unterteilt: ein Sublisten von sortiert Charaktere und ein Sublisten von Ich sortiert Figuren. Der Algorithmus sucht dann den ungeortierten Sublisten nach dem kleinsten Element und platziert das kleinste Element in den Sublisten sortierter Zeichen. Es setzt diesen Prozess fort, bis die gesamte Zeichenfolge sortiert ist.

Implementieren Auswahlsart In C ++ werden wir die folgenden Schritte verwenden.

Schritt 1: Erstellen Sie eine für die Schleife, beginnend mit dem Zeichenindex I gleich 0. Die Schleife wird einmal durch die Zeichenfolge iteriert.

Schritt 2: Stellen Sie den Mindestindex auf i ein.

Schritt 3: Erstellen Sie eine verschachtelte für die Schleife, beginnend mit dem Charakterindex j gleich i+1. Die Schleife wird durch die verbleibenden Zeichen in der Zeichenfolge iteriert.

Schritt 4: Vergleichen Sie das Zeichen bei Index I mit dem Charakter bei Index J. Wenn das Charakter bei Index j kleiner als das Zeichen bei Index I ist, setzen wir den Mindestindex auf J.

Schritt 5: Nach dem verschachtelten für die Schleife tauschen wir das Charakter mit dem Mindestindex mit dem Charakter unter dem Index i aus.

Schritt 6: Wiederholen Sie die Schritte 1-5, bis wir das Ende der Zeichenfolge erreichen.

Das Programm für die Auswahlsorte ist unten angegeben:

#enthalten
#enthalten
Verwenden von Namespace STD;
void SelectionsSort (String & S)
int len ​​= s.Länge();
für (int i = 0; i< len-1; i++)
int minindex = i;
für (int j = i+1; j Wenn (s [j] < s[minIndex])
minIndex = j;


if (Minindex != i)
Swap (s [i], s [Minindex]);



int main ()
String str = "Dies ist ein Sortieralgorithmus";
Cout<< "Original string was: " << str <SelectionsOrt (STR);
Cout<< "Sorted string is: " << str <Rückkehr 0;

Im obigen Code wird eine String -Referenz in die gesendet SelectionsSort Funktion, die die Zeichenfolge an Ort sortiert. Durch das Ieserieren der Zeichenfolge von der aktuellen Position bis zum Ende identifiziert die Funktion zuerst das kleinste Element im ungeortierten Teil der Zeichenfolge. Das Element an der vorliegenden Stelle in der Zeichenfolge wird für das minimale Element nach der Bestimmung ausgeschaltet. Diese Prozedur wird für jedes Element der Zeichenfolge in der äußeren Schleife der Funktion wiederholt, bis die gesamte Zeichenfolge in nicht abnehmender Reihenfolge angeordnet ist.

Ausgang

2: Insertion -Sortierung

Sortieren durch Einfügen ist ein weiterer vergleichsbasierter Sortieralgorithmus und funktioniert, indem die Eingabe in sortierte und ungeortierte Teile geteilt wird. Der Algorithmus iteriert dann den unortalen Teil des Eingangs und fügt das Element in seine richtige Position hinzu, während die größeren Elemente nach rechts verschoben werden. Dazu sollten die folgenden Schritte befolgt werden:

Schritt 1: Erstellen Sie eine für die Schleife, beginnend mit dem Zeichenindex I gleich 1. Die Schleife wird einmal durch die Zeichenfolge iteriert.

Schritt 2: Legen Sie den Variablenschlüssel gleich dem Zeichen im Index i ein.

Schritt 3: Erstellen Sie eine verschachtelte während der Schleife, beginnend mit dem Charakterindex j gleich I-1. Die Schleife wird durch den sortierten Teil der Saite iteriert.

Schritt 4: Vergleichen Sie das Zeichen am Index J mit dem Variablenschlüssel. Wenn der Variablenschlüssel unter dem Index j kleiner als das Zeichen ist, tauschen wir das Zeichen gegen den Index J mit dem Zeichen bei Index J+1 aus. Stellen Sie dann die Variable J gleich J-1 ein.

Schritt 5: Wiederholen Sie Schritt 4, bis j größer oder gleich 0 ist, oder der Variablenschlüssel ist größer oder gleich dem Zeichen am Index J.

Schritt 6: Wiederholen Sie die Schritte 1-5, bis wir das Ende der Zeichenfolge erreichen.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str;
Cout<< "Original string was: " ;
Getline (cin, str);
int länge = str.Länge();
für (int i = 1; i = 0 && st [j]> temp)
Str [j + 1] = str [j];
J--;

STR [j + 1] = temp;

Cout<< "\nSorted string is: " << str << " \n";
Rückkehr 0;

Wir teilen das Array in diesem Code in sortierte und ungeortierte Sublisten auf. Die Werte in der ungeortierten Komponente werden dann verglichen und werden sortiert, bevor sie dem sortierten Sublisten hinzugefügt werden. Das ursprüngliche Mitglied des sortierten Arrays wird als sortierter Sublist angesehen. Wir vergleiche jedes Element im unsortierten Sublisten mit jedem Element des sortierten Sublisten. Dann werden alle größeren Komponenten nach rechts bewegt.

Ausgang

3: Blasensorte

Eine weitere einfache Sortierungstechnik ist die Blasenart, das ständig in der Nähe von Elementen wechselt, wenn sie in der falschen Reihenfolge sind. Trotzdem müssen Sie zunächst verstehen, was Blasenart ist und wie sie funktioniert. Wenn die folgende Zeichenfolge kleiner ist (a [i]> A [i+1]), werden die benachbarten Saiten (a [i] und a [i+1]) im Blasensortiervorgang umgeschaltet. Um eine Zeichenfolge mithilfe zu sortieren Blasenart Befolgen Sie in C ++ folgende Schritte:

Schritt 1: Benutzereingabe für ein Array anfordern.

Schritt 2: Ändern Sie die Namen der Saiten mithilfe "Strcpy".

Schritt 3: Eine verschachtelte für die Schleife wird verwendet, um zwei Saiten zu vergleichenden.

Schritt 4: Die Werte werden umgeschaltet, wenn der ASCII-Wert von y größer als y+1 ist (die Buchstaben, Ziffern und Zeichen, die den 8-Bit-Codes zugeordnet sind).

Schritt 5: Der Austausch wird fortgesetzt, bis die Bedingung falsch zurückgibt.

Der Austausch wird in Schritt 5 fortgesetzt, bis die Bedingung falsch zurückgibt.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
Char st [10] [15], arr [10];
int x, y;
Cout<< "Enter Strings: ";
für (x = 0; x> str [x];

für (x = 1; x < 6; x++)
für (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";
für (x = 0; x < 6; x++)
Cout<< Str[x] <Cout<Rückkehr 0;

Obenstehendes Blasenart Programm werden wir ein Charakter -Array verwenden, das gelten kann 6 Zeichenzeichen als Benutzereingabe. Der "Strcpy" Die Funktion wurde verwendet, wenn die Namen der Saiten in einer verschachtelten Funktion getauscht werden. In der IF -Aussage werden zwei Zeichenfolgen mit der verglichen "STRCMP" Funktion. Und sobald alle Saiten verglichen werden, wird der Ausgang auf dem Bildschirm gedruckt.

Ausgang

4: Schnelle Sortierung

Die Kluft- und Eroberungsmethode wird von verwendet von Schnelle Sorte Rekursive Algorithmus, um die Gegenstände in einer bestimmten Reihenfolge zu arrangieren. Die Methode verwendet den Ansatz, um dieselbe Liste mit Hilfe des Pivot -Werts in zwei Teile zu teilen, von dem angenommen wird. Jedes Element kann jedoch ausgewählt werden. Nach Anrufen an die schnelle Sorte, Die Liste wird mit dem Partitionspunkt unterteilt.

Schritt 1: Geben Sie zunächst eine Zeichenfolge ein.

Schritt 2: Deklarieren Sie die Pivot -Variable und weisen Sie sie dem mittleren Zeichen der Zeichenfolge zu.

Schritt 3: Stellen Sie die niedrigeren und höheren Grenzen der Zeichenfolge als die beiden Variablen niedrig und hoch fest.

Schritt 4: Teilen Sie die Liste in zwei Gruppen auf, eine mit Zeichen, die größer als das Pivot -Element und das andere mit kleineren Zeichen, indem Sie eine Weile -Schleife und ein Elementwipping verwenden.

Schritt 5: Führen Sie den Algorithmus rekursiv auf den beiden Hälften der ursprünglichen Zeichenfolge aus, um die sortierte Zeichenfolge zu erstellen.

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
void quicksort (std :: string & str, int s, int e)
int st = s, end = e;
int pivot = str [(st + end) / 2];
Tun
while (str [st] pivot)
Ende--;
if (st<= end)
std :: Swap (Str [st], str [Ende]);
ST ++;
Ende--;

während (st<= end);
Wenn (s < end)
Quicksort (str, s, Ende);

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


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

In diesem Code deklarieren wir die Start- und Endpositionen von zwei Variablen unter 'Start' Und 'Ende' Das wird relativ zur Zeichenzeichenfolge deklariert. Das Array wird in der Hälfte in der geteilt schnelle Sorte() Funktion und mit einer Do-While-Schleife werden die Elemente umgeschaltet und die Prozedur wird wiederholt, bis die Zeichenfolge sortiert ist. Der schnelle Sorte() Die Funktion wird dann aus dem aufgerufen hauptsächlich() Funktion und die vom Benutzer eingegebene Zeichenfolge wird sortiert und die Ausgabe wird auf dem Bildschirm gedruckt.

Ausgang

5: C ++ Bibliotheksfunktion

Der Sortieren() Die Funktion ist dank des integrierten Bibliotheksfunktionalgorithmus in C ++ zugänglich. Wir werden eine Reihe von Namenszeichenfolgen erstellen und das integrierte verwenden Sortieren() Methode, mit der die Zeichenfolgen mit dem Namen und der Größe des Arrays als Argumente sortiert werden. Die Syntax dieser Funktion ist:

sortieren (erster Iterator, letzter Iterator)

Wo die Anfänger- und Endindizes der String der ersten und letzten Iteratoren sind.

Vergleichsweise ist die Verwendung dieser integrierten Funktion schneller und einfacher zu vervollständigen als die Entwicklung Ihres eigenen Codes. Es dürfen nur nicht untertriebene Saiten mit dem sortiert werden Sortieren() Methode, da es auch den Schnellsortalgorithmus verwendet.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str;
Coutstr;
sortieren (str.begin (), str.Ende());
Cout<< "The sorted string is: " <Rückkehr 0;

In diesem Code geben wir zuerst eine Zeichenfolge vom Benutzer ein, und dann wird die Zeichenfolge mit dem sortiert Sortieren() Methode und dann auf dem Bildschirm gedruckt.

Ausgang

Abschluss

Wenn Sortierung Ein Zeichen in einer C ++ - String muss der Programmierer den Art des Sort -Algorithmus berücksichtigen, der der Aufgabe entspricht, sowie die Größe der Zeichenfolge. Abhängig von der Größe der Zeichenfolge, Insertion, Blasen, Auswahlsortier, Schnellsortier oder Sort (Sorte ()) kann zur Sortierung von Zeichen verwendet werden. Es hängt von der Wahl des Benutzers ab, welche Methode sie wählen möchten.