Python-program til at sortere en streng

Sortering har altid været et ret populært værktøj med masser af applikationer overalt, hvor Python-sproget vælger. Python på sit sprog tilbyder en sorteringsfunktion til at udføre denne opgave. Men fordi ikke alle Python-beholderne er mutable, såsom streng, virker sorteringsfunktionen ikke, da den er på plads, og forsøger at sortere, og uforanderlighed stopper dette. Lad os diskutere specifikke måder, hvorpå en streng kan sorteres.

Eksempel

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

Program til at sortere en streng i Python

Nedenfor er lister over metoder, som vi vil dække:

Program til at sortere en streng ved hjælp af join() og sorted()

Kombinationen af ​​ovenstående funktioner kan potentielt løse dette særlige problem. Denne opgave udføres i 2. trin hvor det første trin får vi den sorterede liste over tegn, og derefter samler vi resultatet for at få resultatet sorteret 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))>

Produktion

The original string : geekforgeeks String after sorting : eeeefggkkors 

Tidskompleksitet: Kodens tidskompleksitet er O(n log n).
Rumkompleksitet: Rumkompleksiteten af ​​den givne kode er O(n).

Sorter en Python-streng u synge den indfødte metode

At sortere en given streng med brugerinput ved hjælp af den indbyggede Python-sorteringsmetode.

Python3




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

Produktion:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Tidskompleksitet: Kodens tidskompleksitet er O(n log n).
Rumkompleksitet: Rumkompleksiteten af ​​den givne kode er O(n).

Sorter en Python-streng ved hjælp af reduce() og lambda

Denne særlige opgave kan også udføres ved hjælp af en kombination af ovenstående funktioner. Her slutter vi os til den resulterende sorterede liste over tegn ved hjælp af lambda funktion forenet af reduceringsfunktionen. Virker kun til 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))>

Produktion

The original string : geekforgeeks String after sorting : eeeefggkkors 

Tidskompleksitet: Kodens tidskompleksitet er O(n log n).
Rumkompleksitet: Rumkompleksiteten af ​​den givne kode er O(n).

Sorter en streng i Python ved hjælp af Bubble Sort

Konverter strengen til en liste med tegn, og brug derefter boble sortering algoritme til at sortere listen. Slut dig nu til den sorterede liste for at 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]>tanke[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))>

Produktion

Original string: geekforgeeks String after sorting: eeeefggkkors 

Tidskompleksitet : O(n^2), fordi vi bruger boblesorteringsalgoritmen, som har en tidskompleksitet på O(n^2).
Hjælpeplads: O(n), fordi vi opretter en ny liste over tegn fra den originale streng.

Program til at sortere en streng ved hjælp af Merge Sort

Denne tilgang bruger flette sortering algoritme til at sortere tegnene i strengen. Den konverterer først strengen til en liste af tegn og deler derefter listen rekursivt i to, indtil grundsæsonen for et enkelt element er nået. De to halvdele flettes derefter sammen igen i sorteret rækkefølge ved hjælp af funktionen merge(). Den sorterede liste konverteres derefter tilbage 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)>

Produktion

String after sorting: eeeefggkkors 

Tidskompleksitet: O(n log n) hvor n er længden af ​​inputstrengen s.
Rumkompleksitet: O(n) hvor n er længden af ​​inputstrengen s.

Sorter en streng i et Python-program ved hjælp af en ordbog

Dette program sorterer en given inputstreng i stigende rækkefølge baseret på de tegn, der findes i den. Den bruger en ordbog til at tælle frekvensen af ​​hvert tegn og sorterer dem derefter baseret på tegnets ASCII-værdi.

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

Produktion

Original string: geekforgeeks String after sorting: eeeefggkkors 

Tidskompleksitet: Tidskompleksiteten af ​​denne algoritme er O(nlogn) på grund af brugen af ​​funktionen sorteret().
Rumkompleksitet: Rumkompleksiteten af ​​denne algoritme er O(n) på grund af brugen af ​​ordbogen til at gemme antallet af hvert tegn.