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:

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.