Python-program for å sortere en streng

Sortering har alltid vært et ganske populært verktøy med mange applikasjoner overalt, der Python-språket velger. Python på sitt språk tilbyr en sorteringsfunksjon for å utføre denne oppgaven. Men fordi ikke alle Python-beholderne er mutbare, for eksempel streng, fungerer ikke sorteringsfunksjonen slik den er på plass og prøver å sortere, og uforanderlighet stopper dette. La oss diskutere spesifikke måter en streng kan sorteres på.

Eksempel

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

Program for å sortere en streng i Python

Nedenfor er listene over metoder som vi vil dekke:

Program for å sortere en streng ved å bruke join() og sorted()

Kombinasjonen av funksjonene ovenfor kan potensielt løse dette spesielle problemet. Denne oppgaven utføres i 2. trinn der det første trinnet får vi den sorterte listen over tegn og deretter slår vi sammen resultatet for å få resultatet sortert streng.

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

Produksjon

The original string : geekforgeeks String after sorting : eeeefggkkors 

Tidskompleksitet: Tidskompleksiteten til koden er O(n log n).
Plass kompleksitet: Romkompleksiteten til den gitte koden er O(n).

Sorter en Python-streng u synge Native Method

For å sortere en gitt streng med brukerinndata ved å bruke den innebygde Python-sorteringsmetoden.

Python3




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

Produksjon:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Tidskompleksitet: Tidskompleksiteten til koden er O(n log n).
Plass kompleksitet: Romkompleksiteten til den gitte koden er O(n).

Sorter en Python-streng ved å bruke reduce() og lambda

Denne spesielle oppgaven kan også utføres ved å bruke en kombinasjon av funksjonene ovenfor. Her slår vi sammen den resulterende sorterte listen over tegn ved å bruke lambda funksjon forenes med reduksjonsfunksjonen. Fungerer bare for 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))>

Produksjon

The original string : geekforgeeks String after sorting : eeeefggkkors 

Tidskompleksitet: Tidskompleksiteten til koden er O(n log n).
Plass kompleksitet: Romkompleksiteten til den gitte koden er O(n).

Sorter en streng i Python ved å bruke Bubble Sort

Konverter strengen til en liste med tegn og bruk deretter boble sortering algoritme for å sortere listen nå bli med i den sorterte listen for å danne en streng.

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

Produksjon

Original string: geekforgeeks String after sorting: eeeefggkkors 

Tidskompleksitet : O(n^2) fordi vi bruker boblesorteringsalgoritmen som har en tidskompleksitet på O(n^2).
Hjelpeplass: O(n) fordi vi lager en ny liste med tegn fra den opprinnelige strengen.

Program for å sortere en streng ved hjelp av Merge Sort

Denne tilnærmingen bruker slå sammen sortering algoritme for å sortere tegnene i strengen. Den konverterer først strengen til en liste med tegn, og deler deretter listen rekursivt i to til grunntallet for et enkelt element er nådd. De to halvdelene blir deretter slått sammen igjen i sortert rekkefølge ved hjelp av funksjonen merge(). Den sorterte listen konverteres deretter tilbake til en streng.

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

Produksjon

String after sorting: eeeefggkkors 

Tidskompleksitet: O(n log n) hvor n er lengden på inndatastrengen s.
Romkompleksitet: O(n) hvor n er lengden på inndatastrengen s.

Sorter en streng i et Python-program ved hjelp av en ordbok

Dette programmet sorterer en gitt inndatastreng i stigende rekkefølge basert på tegnene som finnes i den. Den bruker en ordbok for å telle frekvensen til hvert tegn og sorterer dem deretter basert på ASCII-verdien til tegnet.

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

Produksjon

Original string: geekforgeeks String after sorting: eeeefggkkors 

Tidskompleksitet: Tidskompleksiteten til denne algoritmen er O(nlogn) på grunn av bruken av sortert()-funksjonen.
Plass kompleksitet: Romkompleksiteten til denne algoritmen er O(n) på grunn av bruken av ordboken for å lagre antallet av hvert tegn.