Program w Pythonie do sortowania ciągu

Sortowanie zawsze było dość popularnym narzędziem z mnóstwem aplikacji wszędzie tam, gdzie preferowany jest język Python. Python w swoim języku oferuje funkcję sortowania, która umożliwia wykonanie tego zadania. Ponieważ jednak nie wszystkie kontenery Pythona są modyfikowalne, np. ciągi znaków, funkcja sortowania nie działa, ponieważ istnieje podczas próby sortowania, a niezmienność to powstrzymuje. Omówmy konkretne sposoby sortowania ciągu.

Przykład

  Input:   geekforgeeks   Output:   eeeefggkkors   Explaination:  The Sorting the characters in ascending order gives us 'eeeefggkkors'. 

Program do sortowania ciągu w Pythonie

Poniżej znajduje się lista metod, które omówimy:

Program sortujący ciąg znaków za pomocą funkcji Join() i Sorted()

Połączenie powyższych funkcji może potencjalnie rozwiązać ten konkretny problem. Zadanie to wykonywane jest w kroku 2 w którym w pierwszym kroku otrzymujemy posortowaną listę znaków, a następnie łączymy wynik, aby uzyskać wynik posortowany ciąg.

Python3




test_string> => 'geekforgeeks'> # printing original string> print> (> 'The original string : '> +> str> (test_string))> # using join() + sorted()> # Sorting a string> res> => ''.join(> sorted> (test_string))> > # print result> print> (> 'String after sorting : '> +> str> (res))>

Wyjście

The original string : geekforgeeks String after sorting : eeeefggkkors 

Złożoność czasowa: Złożoność czasowa kodu wynosi O(n log n).
Złożoność przestrzeni: Złożoność przestrzenna danego kodu wynosi O(n).

Sortuj ciąg Pythona u śpiewać metodę rodzimą

Aby posortować dany ciąg znaków za pomocą wbudowanej metody sortowania Pythona.

Python3




String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')>

Wyjście:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Złożoność czasowa: Złożoność czasowa kodu wynosi O(n log n).
Złożoność przestrzeni: Złożoność przestrzenna danego kodu wynosi O(n).

Sortuj ciąg Pythona za pomocą funkcji redukcji() i lambdy

To konkretne zadanie można również wykonać, stosując kombinację powyższych funkcji. Tutaj łączymy wynikową posortowaną listę znaków za pomocą funkcja lambda połączone funkcją redukcji. Działa tylko dla Pythona2

Pyton




test_string> => 'geekforgeeks'> # printing original string> print> (> 'The original string : '> +> str> (test_string))> # using sorted() + reduce() + lambda> res> => reduce> (> lambda> x, y: x> +> y,> sorted> (test_string))> > # print result> print> (> 'String after sorting : '> +> str> (res))>

Wyjście

The original string : geekforgeeks String after sorting : eeeefggkkors 

Złożoność czasowa: Złożoność czasowa kodu wynosi O(n log n).
Złożoność przestrzeni: Złożoność przestrzenna danego kodu wynosi O(n).

Sortuj ciąg w Pythonie przy użyciu sortowania bąbelkowego

Przekonwertuj ciąg na listę znaków, a następnie użyj metody sortowanie bąbelkowe algorytm sortowania listy, teraz dołącz do posortowanej listy, tworząc ciąg znaków.

Python3




def> sort_string(s):> > chars> => list> (s)> > n> => len> (chars)> > for> i> in> range> (n):> > for> j> in> range> (> 0> , n> -> i> -> 1> ):> > if> chars[j]>czołgi[j> +> 1> ]:> > chars[j], chars[j> +> 1> ]> => chars[j> +> 1> ], chars[j]> > return> ''.join(chars)> s> => 'geekforgeeks'> print> (> 'Original string:'> , s)> print> (> 'String after sorting:'> , sort_string(s))>

Wyjście

Original string: geekforgeeks String after sorting: eeeefggkkors 

Złożoność czasowa : O(n^2), ponieważ używamy algorytmu sortowania bąbelkowego, którego złożoność czasowa wynosi O(n^2).
Przestrzeń pomocnicza: O(n), ponieważ tworzymy nową listę znaków z oryginalnego ciągu.

Program sortujący ciąg znaków za pomocą sortowania przez scalanie

W tym podejściu wykorzystuje się sortowanie przez scalanie algorytm sortowania znaków w ciągu. Najpierw konwertuje ciąg znaków na listę znaków, a następnie rekurencyjnie dzieli listę na pół, aż do osiągnięcia przypadku bazowego pojedynczego elementu. Następnie obie połówki są ponownie łączone w posortowanej kolejności za pomocą funkcji merge(). Posortowana lista jest następnie konwertowana z powrotem na ciąg znaków.

Python3




# Define a function called 'merge_sort'> def> merge_sort(s):> > if> len> (s) <> => 1> :> > return> s> > # find the middle index of the string 's'> > mid> => len> (s)> /> /> 2> > # split the string into two halves, left and right> > left> => merge_sort(s[:mid])> > right> => merge_sort(s[mid:])> > #Recursively apply the merge_sort function on the left and right halves.> > return> merge(left, right)> > # Merge the left and right halves using the merge function.> def> merge(left, right):> #Initialize an empty list called 'result' and two indices, 'i' and 'j', both set to 0.> > result> => []> > i> => j> => 0> > while> i <> len> (left)> and> j <> len> (right):> > if> left[i] result.append(left[i]) #Increment the index of the array i += 1 else: result.append(right[j]) #Increment the index of the array j += 1 result += left[i:] result += right[j:] return result s = 'geekforgeeks' #Convert the sorted list to a string and print the result. sorted_s = ''.join(merge_sort(list(s))) print('String after sorting:', sorted_s)>

Wyjście

String after sorting: eeeefggkkors 

Złożoność czasowa: O(n log n) gdzie n jest długością ciągu wejściowego s.
Złożoność przestrzeni: O(n) gdzie n jest długością ciągu wejściowego s.

Sortuj ciąg w programie w języku Python za pomocą słownika

Ten program sortuje dany ciąg wejściowy w kolejności rosnącej na podstawie występujących w nim znaków. Używa słownika do zliczenia częstotliwości każdego znaku, a następnie sortuje je na podstawie wartości ASCII znaku.

Python3




input_string> => 'geekforgeeks'> #Initialize an empty dictionary to store the count> char_count> => {}> #Loop through each character in the input string and update the count of that character> for> char> in> input_string:> > if> char> in> char_count:> > char_count[char]> +> => 1> > else> :> > char_count[char]> => 1> > #Create an empty string to store the sorted string.> sorted_string> => ''> #Loop through each character in the sorted list of keys of the dictionary> #Add that character multiplied by its count in the input string to the sorted string.> for> char> in> sorted> (char_count.keys()):> > sorted_string> +> => char> *> char_count[char]> #Print the original string and the sorted string.> print> (> 'Original string: {}'> .> format> (input_string))> print> (> 'String after sorting: {}'> .> format> (sorted_string))>

Wyjście

Original string: geekforgeeks String after sorting: eeeefggkkors 

Złożoność czasowa: Złożoność czasowa tego algorytmu wynosi O(nlogn) ze względu na użycie funkcji sorted().
Złożoność przestrzeni: Złożoność przestrzenna tego algorytmu wynosi O(n) ze względu na użycie słownika do przechowywania liczby każdego znaku.