Sortowanie znaków ciągu C ++

Sortowanie znaków ciągu C ++
W c++, smyczki to tablice postaci. Podczas przetwarzania łańcucha możemy chcieć sortować postacie w nim. Aby to zrobić, możemy użyć różnych Algorytmy sortowania Aby zaspokoić różne potrzeby. Sortowanie postaci łańcucha C ++ obejmuje wymianę znaków w obrębie strunowy, lub sekwencja znaków, w określonej kolejności. To kolejność jest zwykle alfabetyczna lub numeryczna, ale może być również określone przez inne sortowanie kryteria specyficzne dla zadania programowania.

Komputery przetwarzają ciągi w operacjach na poziomie postaci i przechowują je w pamięci, podobnie jak każde Algorytm sortowania musi wziąć pod uwagę przepływ bajtów w ciągu, a także ich relacje numeryczne lub alfabetyczne. W tym artykule obejmie kroki w celu wdrożenia najczęstszych algorytmów sortowania dla ciągów C ++.

Sortowanie znaków ciągu C ++

Istnieje pięć metod sortowania ciągu, jak podano:

  • SORT SORT
  • Sortowanie przez wstawianie
  • Bańka
  • Szybkie sortowanie
  • Sort () funkcja

1: Sort

SORT SORT jest algorytmem sortowania opartego na porównaniu, który działa poprzez podzielenie danych wejściowych na dwie części: Sublist posortowany postacie i subliści nieposortowany postacie. Algorytm następnie przeszukuje nieprojektowany podatnik w poszukiwaniu najmniejszego elementu i umieszcza najmniejszy element w sortistach sortowanych postaci. Kontynuuje ten proces do momentu sortowania całego ciągu.

Do wdrożenia SORT SORT W C ++ użyjemy następujących kroków.

Krok 1: Utwórz pętlę, zaczynając od indeksu znaków I równy 0. Pętla zostanie razu iterowana przez ciąg.

Krok 2: Ustaw minimalny indeks na i.

Krok 3: Utwórz zagnieżdżoną pętlę, zaczynając od indeksu znaków j równych I+1. Pętla będzie iterowana przez pozostałe znaki w ciągu.

Krok 4: Porównaj postać w indeksie I z postacią w indeksie j. Jeśli znak w indeksie J jest mniejszy niż znak w indeksie I, ustawiamy minimalny indeks na j.

Krok 5: Po zagnieżdżonej pętli wymieniamy znak na minimalny wskaźnik z znakiem przy indeksie I.

Krok 6: Powtarzaj kroki 1-5, aż dotrzemy do końca ciągu.

Program wyboru podano poniżej:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
void SelectionSort (String & S)
int len ​​= s.długość();
dla (int i = 0; i< len-1; i++)
int minindex = i;
dla (int j = i+1; j if (s [j] < s[minIndex])
MinIndex = j;


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



int main ()
String str = "To jest algorytm sortowania";
Cout<< "Original string was: " << str <selekcja (str);
Cout<< "Sorted string is: " << str <powrót 0;

W powyższym kodzie odniesienie ciągów jest wysyłane do selekcja funkcja, która sortuje ciąg na miejscu. Iterowanie ciągu od bieżącej pozycji do końca, funkcja najpierw identyfikuje najmniejszy element w nieporozińcanej części ciągu. Element w obecnym miejscu w ciągu jest przełączany dla elementu minimalnego po jego ustaleniu. Ta procedura jest powtarzana dla każdego elementu łańcucha w zewnętrznej pętli funkcji, dopóki cały ciąg nie zostanie ułożony w kolejność niezdolną.

Wyjście

2: sortowanie insercji

Sortowanie przez wstawianie jest kolejnym algorytmem sortowania opartego na porównaniu i działa poprzez podzielenie danych wejściowych na posortowane i nieporządkowane części. Algorytm następnie itera przez nieprojektowaną część wejścia i dodaje element do jego prawidłowej pozycji, jednocześnie zmieniając większe elementy w prawo. Aby to zrobić, należy wykonać następujące kroki:

Krok 1: Utwórz pętlę, zaczynając od indeksu znaków I równa 1. Pętla zostanie razu iterowana przez ciąg.

Krok 2: Ustaw klawisz zmiennej równy znakowi w indeksie i.

Krok 3: Utwórz zagnieżdżoną pętlę, zaczynając od indeksu znaków J równa I-1. Pętla będzie iterowana przez posortowaną część łańcucha.

Krok 4: Porównaj znak na indeksie J z klawiszem zmiennym. Jeśli klawisz zmiennej jest mniejszy niż znak w indeksie J, zamieniamy znak na indeksie J z znakiem przy indeksie J+1. Następnie ustaw zmienną J równą J-1.

Krok 5: Powtórz krok 4, aż j będzie większy lub równy 0 lub klawisz zmiennej jest większy lub równy znakowi przy indeksie j.

Krok 6: Powtarzaj kroki 1-5, aż dotrzemy do końca ciągu.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
string str;
Cout<< "Original string was: " ;
getline (cin, str);
int długość = str.długość();
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";
powrót 0;

W tym kodzie dzielimy tablicę na posortowane i nieporządkowane podmioty. Następnie porównywane są wartości w komponencie nieporządkowanym i są sortowane przed dodaniem do posortowanego podatystę. Początkowy członek posortowanego tablicy zostanie uznany za sortowanego Sublistę. Porównujemy każdy element w Unsorted Sublist z każdym elementem w posortowanym podatystom. Następnie wszystkie większe komponenty są przenoszone w prawo.

Wyjście

3: Sort

Kolejną prostą techniką sortowania jest bańka, który nieustannie zmienia się w pobliskich elementach, jeśli są w niewłaściwej kolejności. Niemniej jednak musisz najpierw zrozumieć, czym jest bańka i jak funkcjonuje. Gdy następujący ciąg jest mniejszy ([i]> a [i+1]), sąsiednie sznurki ([i] i [i+1]) są przełączane w procesie sortowania pęcherzyków. Aby sortować ciąg za pomocą bańka W C ++ wykonaj następujące kroki:

Krok 1: Poproś o wejście użytkownika dla tablicy.

Krok 2: Zmień nazwy ciągów za pomocą „strcpy”.

Krok 3: Zagnieżdżone do pętli służy do przejścia i porównywania dwóch sznurków.

Krok 4: Wartości są przełączane, jeśli wartość ASCII jest większa niż Y+1 (litery, cyfry i znaki przydzielone do 8-bitowych kodów).

Krok 5: Zamiana trwa, aż warunek zwróci fałsz.

Zamiana trwa w kroku 5, aż warunek zwróci fałszywe.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
Char Str [10] [15], ARR [10];
int x, y;
Cout<< "Enter Strings: ";
for (x = 0; x> str [x];

dla (x = 1; x < 6; x++)
dla (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";
dla (x = 0; x < 6; x++)
Cout<< Str[x] <Cout<powrót 0;

Powyższe Bańka Program wykorzystamy tablicę znaków, która może pomieścić 6 Strings znaków jako wejście użytkownika. „Strcpy” Zastosowano funkcję, w której nazwy ciągów są zamieniane w funkcji zagnieżdżonej. W stwierdzeniu IF, dwa ciągi są porównywane za pomocą „Strcmp” funkcjonować. A po porównaniu wszystkich ciągów wyjście jest wydrukowane na ekranie.

Wyjście

4: Szybki sort

Metoda podziału i podboju jest stosowana przez Szybki rodzaj Algorytm rekurencyjny w celu ułożenia przedmiotów w określonej kolejności. Metoda wykorzystuje podejście do podzielenia tej samej listy na dwie za pomocą wartości obrotowej, która jest uważana za pierwszego członka, a nie przy użyciu dodatkowego przechowywania dla Sublistów. Każdy element może być jednak wybrany. Po połączeniach z szybkie sortowanie, Lista jest podzielona za pomocą punktu partycji.

Krok 1: Najpierw wprowadź ciąg.

Krok 2: Dokonaj zmiennej PIVOT i przypisz ją do środkowego znaku ciągu.

Krok 3: Ustalić niższe i wyższe granice łańcucha jako dwie zmienne odpowiednio niskie i wysokie.

Krok 4: Zacznij podzielić listę na dwie grupy, jedną z znakami większymi niż element obrotu, a drugi z mniejszymi znakami, używając pętli i zamiany elementów.

Krok 5: Rekurencyjnie uruchom algorytm na dwóch połówkach oryginalnego ciągu, aby utworzyć posortowany ciąg.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
void Quicksort (std :: string & str, int s, int e)
int st = s, end = e;
int Pivot = str [(st + end) / 2];
Do
while (str [st] obrotowe)
koniec--;
if (st<= end)
std :: swap (str [st], str [end]);
ST ++;
koniec--;

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

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


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

W tym kodzie deklarujemy pozycje początkowe i końcowe dwóch zmiennych 'początek' I 'koniec' które zostaną ogłoszone w stosunku do ciągu znaków. Tablica zostanie podzielona na pół w szybkie sortowanie() funkcja, a następnie za pomocą pętli do-podczas gdy elementy zostaną przełączone, a procedura będzie powtarzana do momentu posortowania ciągu. szybkie sortowanie() funkcja zostanie następnie wywołana z główny() funkcja i ciąg wprowadzony przez użytkownika zostaną posortowane, a wyjście zostanie wydrukowane na ekranie.

Wyjście

5: Funkcja biblioteki C ++

sortować() Funkcja jest dostępna w C ++ dzięki wbudowanemu algorytmowi funkcji biblioteki. Zrobimy szereg strun nazw i użyjemy wbudowanych sortować() Metoda, która sortuje ciągi za pomocą nazwy i rozmiaru tablicy jako argumentów. Składnia tej funkcji to:

sort (pierwszy iterator, ostatni iterator)

gdzie wskaźniki początkowe i końcowe sznurka są odpowiednio pierwszymi i ostatnimi iteratorami.

W porównaniu z tym, że korzystanie z tej wbudowanej funkcji jest szybsze i łatwiejsze do wypełnienia niż opracowanie własnego kodu. Tylko nieopasowane ciągi mogą być sortowane za pomocą sortować() metoda, ponieważ wykorzystuje również algorytm szybkiego sortowania.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
string str;
Coutstr;
Sort (str.początek (), str.koniec());
Cout<< "The sorted string is: " <powrót 0;

W tym kodzie najpierw wprowadzimy ciąg przez użytkownika, a następnie ciąg zostanie posortowany za pomocą sortować() metoda, a następnie wydrukowana na ekranie.

Wyjście

Wniosek

Gdy sortowanie Postać w ciągu C ++, programista musi rozważyć typ sortowania odpowiedniego do zadania, a także rozmiar ciągu. W zależności od rozmiaru sznurka, insercja, bańka, sortowanie selekcji, szybkie sort lub sort () można użyć do sortowania znaków. To zależy od wyboru użytkownika, która metoda chcą wybrać.