Python-programma om een string te sorteren
Sorteren is altijd een behoorlijk populair hulpprogramma geweest met overal veel toepassingen, waar de Python-taal kiest. Python biedt in zijn taal een sorteerfunctie om deze taak uit te voeren. Maar omdat niet alle Python-containers veranderlijk zijn, zoals string, werkt de sorteerfunctie niet omdat deze probeert te sorteren, en de onveranderlijkheid stopt dit. Laten we specifieke manieren bespreken waarop een string kan worden gesorteerd.
Voorbeeld
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.
Programma om een string in Python te sorteren
Hieronder vindt u de lijsten met methoden die we zullen behandelen:
- Met behulp van join() en gesorteerd()
- Met behulp van de Native-methode
- De gesorteerde functie gebruiken met verminderen() en lambda
- Gebruik makend van Bellensoort
- De ... gebruiken samenvoegen sorteren methode
- Gebruik maken van een woordenboek
Programma om een string te sorteren met behulp van join() en sorted()
De combinatie van de bovenstaande functies kan dit specifieke probleem mogelijk oplossen. Deze taak wordt uitgevoerd in de 2e stap waarbij we in de eerste stap de gesorteerde lijst met tekens krijgen en vervolgens het resultaat samenvoegen om de resulterende te krijgen gesorteerde reeks.
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))> |
Uitvoer
The original string : geekforgeeks String after sorting : eeeefggkkors
Tijdcomplexiteit: De tijdscomplexiteit van de code is O(n log n).
Ruimtecomplexiteit: De ruimtecomplexiteit van de gegeven code is O(n).
Sorteer een Python-string u zing de Native Method
Om een bepaalde string te sorteren met gebruikersinvoer met behulp van de ingebouwde Python-sorteermethode.
Python3
String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')> |
Uitgang:
Original String: geekforgeeks Sorted String: eeeefggkkors
Tijdcomplexiteit: De tijdscomplexiteit van de code is O(n log n).
Ruimtecomplexiteit: De ruimtecomplexiteit van de gegeven code is O(n).
Sorteer een Python-string met reduce() en lambda
Deze specifieke taak kan ook worden uitgevoerd met behulp van een combinatie van de bovenstaande functies. Hier voegen we ons bij de resulterende gesorteerde lijst met tekens met behulp van de lambda-functie vergezeld door de reduceerfunctie. Werkt alleen voor 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))> |
Uitvoer
The original string : geekforgeeks String after sorting : eeeefggkkors
Tijdcomplexiteit: De tijdscomplexiteit van de code is O(n log n).
Ruimtecomplexiteit: De ruimtecomplexiteit van de gegeven code is O(n).
Sorteer een tekenreeks in Python met behulp van Bubble Sort
Converteer de tekenreeks naar een lijst met tekens en gebruik vervolgens de bubbel soort algoritme om de lijst te sorteren, voeg nu de gesorteerde lijst samen om een string te vormen.
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]>tanks[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))> |
Uitvoer
Original string: geekforgeeks String after sorting: eeeefggkkors
Tijdcomplexiteit : O(n^2) omdat we het bellensorteringsalgoritme gebruiken dat een tijdscomplexiteit heeft van O(n^2).
Hulpruimte: O(n) omdat we een nieuwe lijst met tekens maken op basis van de originele string.
Programma om een string te sorteren met behulp van de samenvoegsortering
Deze aanpak maakt gebruik van de sortering samenvoegen algoritme om de tekens in de string te sorteren. Het converteert de tekenreeks eerst in een lijst met tekens en verdeelt de lijst vervolgens recursief in tweeën totdat het basisscenario van een enkel element is bereikt. De twee helften worden vervolgens in gesorteerde volgorde weer samengevoegd met behulp van de functie merge(). De gesorteerde lijst wordt vervolgens weer omgezet in een string.
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)> |
Uitvoer
String after sorting: eeeefggkkors
Tijdcomplexiteit: O(n logboek n) waarbij n de lengte is van de invoerreeks s.
Ruimtecomplexiteit: O(n) waarbij n de lengte is van de invoerreeks s.
Sorteer een string in een Python-programma met behulp van een woordenboek
Dit programma sorteert een gegeven invoerreeks in oplopende volgorde op basis van de daarin aanwezige tekens. Het gebruikt een woordenboek om de frequentie van elk teken te tellen en sorteert ze vervolgens op basis van de ASCII-waarde van het teken.
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))> |
Uitvoer
Original string: geekforgeeks String after sorting: eeeefggkkors
Tijdcomplexiteit: De tijdscomplexiteit van dit algoritme is O(nlogn) vanwege het gebruik van de functie sort().
Ruimtecomplexiteit: De ruimtecomplexiteit van dit algoritme is O(n) vanwege het gebruik van het woordenboek om het aantal van elk teken op te slaan.