Program Python na triedenie reťazca
Triedenie bol vždy pomerne populárny nástroj s množstvom aplikácií všade tam, kde sa volí jazyk Python. Python vo svojom jazyku ponúka funkciu triedenia na vykonanie tejto úlohy. Ale pretože nie všetky kontajnery Pythonu sú meniteľné, ako napríklad reťazec, funkcia triedenia nefunguje, pretože sa snaží triediť a nemennosť to zastaví. Poďme diskutovať o konkrétnych spôsoboch, ako možno reťazec triediť.
Príklad
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.
Program na triedenie reťazca v Pythone
Nižšie je uvedený zoznam metód, ktorým sa budeme venovať:
- Pomocou join() a zoradené ()
- Použitie natívnej metódy
- Pomocou funkcie triedenia s znížiť () a lambda
- Použitím Bublinové triedenie
- Pomocou zlúčiť triediť metóda
- Pomocou a slovník
Program na triedenie reťazca pomocou join() a sort()
Kombinácia vyššie uvedených funkcií môže potenciálne vyriešiť tento konkrétny problém. Táto úloha sa vykonáva v 2. kroku v ktorom v prvom kroku získame zoradený zoznam znakov a následne spojíme výsledok, aby sme dostali výslednicu triedený reťazec.
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ýkon
The original string : geekforgeeks String after sorting : eeeefggkkors
Časová zložitosť: Časová zložitosť kódu je O(n log n).
Priestorová zložitosť: Priestorová zložitosť daného kódu je O(n).
Zoradiť reťazec Python u spievať natívnu metódu
Na triedenie daného reťazca s užívateľským vstupom pomocou vstavanej metódy triedenia Pythonu.
Python3
String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')> |
Výkon:
Original String: geekforgeeks Sorted String: eeeefggkkors
Časová zložitosť: Časová zložitosť kódu je O(n log n).
Priestorová zložitosť: Priestorová zložitosť daného kódu je O(n).
Zoraďte reťazec Pythonu pomocou funkcie Redukovať () a lambda
Túto konkrétnu úlohu možno vykonať aj pomocou kombinácie vyššie uvedených funkcií. Tu sa pripojíme k výslednému zoradenému zoznamu znakov pomocou lambda funkcia spojená s funkciou redukcie. Funguje iba pre Python2
Python
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ýkon
The original string : geekforgeeks String after sorting : eeeefggkkors
Časová zložitosť: Časová zložitosť kódu je O(n log n).
Priestorová zložitosť: Priestorová zložitosť daného kódu je O(n).
Zoradiť reťazec v Pythone pomocou Bubble Sort
Skonvertujte reťazec na zoznam znakov a potom použite bublinové triedenie algoritmus na triedenie zoznamu sa teraz pripojte k triedenému zoznamu a vytvorte reťazec.
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ýkon
Original string: geekforgeeks String after sorting: eeeefggkkors
Časová zložitosť : O(n^2), pretože používame algoritmus triedenia bublín, ktorý má časovú zložitosť O(n^2).
Pomocný priestor: O(n), pretože z pôvodného reťazca vytvoríme nový zoznam znakov.
Program na triedenie reťazca pomocou funkcie Merge Sort
Tento prístup využíva zlúčiť triediť algoritmus na triedenie znakov v reťazci. Najprv skonvertuje reťazec na zoznam znakov a potom rekurzívne rozdelí zoznam na polovicu, kým sa nedosiahne základný prípad jedného prvku. Tieto dve polovice sa potom znova spoja v zoradenom poradí pomocou funkcie merge(). Zoradený zoznam sa potom skonvertuje späť na reťazec.
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ýkon
String after sorting: eeeefggkkors
Časová zložitosť: O(n log n) kde n je dĺžka vstupného reťazca s.
Priestorová zložitosť: O(n) kde n je dĺžka vstupného reťazca s.
Zoraďte reťazec v programe Python pomocou slovníka
Tento program triedi daný vstupný reťazec vo vzostupnom poradí na základe znakov v ňom prítomných. Používa slovník na výpočet frekvencie každého znaku a potom ich triedi na základe 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ýkon
Original string: geekforgeeks String after sorting: eeeefggkkors
Časová zložitosť: Časová zložitosť tohto algoritmu je O(nlogn) kvôli použitiu funkcie sorted().
Priestorová zložitosť: Priestorová zložitosť tohto algoritmu je O(n) v dôsledku použitia slovníka na uloženie počtu každého znaku.