Program Python pentru sortarea unui șir

Triere a fost întotdeauna un utilitar destul de popular, cu o mulțime de aplicații peste tot, unde optează limbajul Python. Python în limbajul său oferă o funcție de sortare pentru a îndeplini această sarcină. Dar pentru că nu toate containerele Python sunt modificabile, cum ar fi șirul de caractere, funcția de sortare nu funcționează, deoarece este în vigoare încercând să sorteze, iar imuabilitatea oprește acest lucru. Să discutăm despre moduri specifice în care un șir poate fi sortat.

Exemplu

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

Program pentru sortarea unui șir în Python

Mai jos sunt listele de metode pe care le vom acoperi:

Program pentru a sorta un șir folosind join() și sorted()

Combinația funcțiilor de mai sus poate rezolva această problemă specială. Această sarcină este efectuată în a doua etapă în care primul pas obținem lista sortată de caractere și apoi unim rezultatul pentru a obține rezultatul șir sortat.

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

Ieșire

The original string : geekforgeeks String after sorting : eeeefggkkors 

Complexitatea timpului: Complexitatea temporală a codului este O(n log n).
Complexitatea spațiului: Complexitatea spațială a codului dat este O(n).

Sortează un șir Python u cântă Metoda nativă

Pentru a sorta un șir dat cu intrarea utilizatorului folosind metoda de sortare Python încorporată.

Python3




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

Ieșire:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Complexitatea timpului: Complexitatea temporală a codului este O(n log n).
Complexitatea spațiului: Complexitatea spațială a codului dat este O(n).

Sortați un șir Python folosind reduce() și lambda

Această sarcină specială poate fi efectuată și folosind o combinație a funcțiilor de mai sus. Aici ne alăturăm listei sortate de caractere care rezultă folosind functie lambda alăturată de funcţia reduce. Funcționează numai pentru Python2

Piton




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

Ieșire

The original string : geekforgeeks String after sorting : eeeefggkkors 

Complexitatea timpului: Complexitatea temporală a codului este O(n log n).
Complexitatea spațiului: Complexitatea spațială a codului dat este O(n).

Sortați un șir în Python folosind Bubble Sort

Convertiți șirul într-o listă de caractere, apoi utilizați sortare cu bule algoritm de sortare a listei se alătură acum listei sortate pentru a forma un șir.

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]>tancuri[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))>

Ieșire

Original string: geekforgeeks String after sorting: eeeefggkkors 

Complexitatea timpului : O(n^2) deoarece folosim algoritmul de sortare cu bule care are o complexitate de timp de O(n^2).
Spațiu auxiliar: O(n) deoarece creăm o nouă listă de caractere din șirul original.

Program pentru a sorta un șir folosind Merge Sort

Această abordare folosește sortare îmbinare algoritm de sortare a caracterelor din șir. Mai întâi convertește șirul într-o listă de caractere, apoi împarte recursiv lista în jumătate până când se ajunge la cazul de bază al unui singur element. Cele două jumătăți sunt apoi îmbinate împreună în ordine sortată folosind funcția merge(). Lista sortată este apoi convertită înapoi într-un șir.

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

Ieșire

String after sorting: eeeefggkkors 

Complexitatea timpului: O(n log n) unde n este lungimea șirului de intrare s.
Complexitatea spațiului: O(n) unde n este lungimea șirului de intrare s.

Sortați un șir într-un program Python folosind un dicționar

Acest program sortează un șir de intrare dat în ordine crescătoare pe baza caracterelor prezente în el. Folosește un dicționar pentru a număra frecvența fiecărui caracter și apoi le sortează în funcție de valoarea ASCII a caracterului.

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

Ieșire

Original string: geekforgeeks String after sorting: eeeefggkkors 

Complexitatea timpului: Complexitatea temporală a acestui algoritm este O(nlogn) datorită utilizării funcției sorted().
Complexitatea spațiului: Complexitatea spațială a acestui algoritm este O(n) datorită utilizării dicționarului pentru a stoca numărul fiecărui caracter.