Program Python pro třídění řetězce

Řazení byl vždy docela populární nástroj se spoustou aplikací všude tam, kde se volí jazyk Python. Python ve svém jazyce nabízí funkci řazení pro provedení tohoto úkolu. Ale protože ne všechny kontejnery Pythonu jsou proměnlivé, jako je řetězec, funkce řazení nefunguje, protože se snaží třídit a neměnnost to zastaví. Pojďme diskutovat o konkrétních způsobech, jak lze řetězec třídit.

Příklad

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

Program pro třídění řetězce v Pythonu

Níže je uveden seznam metod, kterými se budeme zabývat:

Program pro třídění řetězce pomocí join() a sort()

Kombinace výše uvedených funkcí může potenciálně vyřešit tento konkrétní problém. Tento úkol se provádí ve 2. kroku ve kterém v prvním kroku získáme seřazený seznam znaků a poté spojíme výsledek, abychom dostali výslednici seřazený řetězec.

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))>

Výstup

The original string : geekforgeeks String after sorting : eeeefggkkors 

Časová náročnost: Časová složitost kódu je O(n log n).
Prostorová složitost: Prostorová složitost daného kódu je O(n).

Seřadit pythonovský řetězec u zpívat nativní metodu

Chcete-li seřadit daný řetězec s uživatelským vstupem pomocí vestavěné metody třídění Pythonu.

Python3




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

Výstup:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Časová náročnost: Časová složitost kódu je O(n log n).
Prostorová složitost: Prostorová složitost daného kódu je O(n).

Seřaďte pythonovský řetězec pomocí reduction() a lambda

Tento konkrétní úkol lze také provést pomocí kombinace výše uvedených funkcí. Zde se připojíme k výslednému seřazenému seznamu znaků pomocí funkce lambda spojené funkcí snížení. Funguje pouze pro Python2

Krajta




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))>

Výstup

The original string : geekforgeeks String after sorting : eeeefggkkors 

Časová náročnost: Časová složitost kódu je O(n log n).
Prostorová složitost: Prostorová složitost daného kódu je O(n).

Seřadit řetězec v Pythonu pomocí Bubble Sort

Převeďte řetězec na seznam znaků a poté použijte bublinový druh algoritmus pro třídění seznamu se nyní připojí k seřazenému seznamu a vytvoří řetězec.

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]>tanky[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))>

Výstup

Original string: geekforgeeks String after sorting: eeeefggkkors 

Časová složitost : O(n^2), protože používáme algoritmus pro třídění bublin, který má časovou složitost O(n^2).
Pomocný prostor: O(n), protože z původního řetězce vytvoříme nový seznam znaků.

Program pro třídění řetězce pomocí Merge Sort

Tento přístup využívá Sloučit třídění algoritmus pro řazení znaků v řetězci. Nejprve převede řetězec na seznam znaků a poté rekurzivně rozdělí seznam na polovinu, dokud není dosaženo základního případu jednoho prvku. Tyto dvě poloviny jsou poté sloučeny zpět dohromady v seřazeném pořadí pomocí funkce merge(). Seřazený seznam je poté převeden zpět na řetězec.

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)>

Výstup

String after sorting: eeeefggkkors 

Časová náročnost: O(n log n) kde n je délka vstupního řetězce s.
Vesmírná složitost: O(n) kde n je délka vstupního řetězce s.

Seřadit řetězec v programu Python pomocí slovníku

Tento program třídí daný vstupní řetězec ve vzestupném pořadí na základě znaků v něm přítomných. Pomocí slovníku spočítá frekvenci každého znaku a poté je seřadí na základě hodnoty 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))>

Výstup

Original string: geekforgeeks String after sorting: eeeefggkkors 

Časová náročnost: Časová složitost tohoto algoritmu je O(nlogn) kvůli použití funkce sorted().
Prostorová složitost: Prostorová složitost tohoto algoritmu je O(n) kvůli použití slovníku k uložení počtu každého znaku.