Python-ohjelma merkkijonon lajitteluun
Lajittelu on aina ollut melko suosittu apuohjelma, jossa on paljon sovelluksia kaikkialla, missä Python-kieli valitsee. Python tarjoaa kielellään lajittelutoiminnon tämän tehtävän suorittamiseen. Mutta koska kaikki Python-säilöt eivät ole muuttuvia, kuten merkkijono, lajittelutoiminto ei toimi, koska se yrittää lajitella, ja muuttumattomuus estää tämän. Keskustellaan erityisistä tavoista, joilla merkkijono voidaan lajitella.
Esimerkki
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.
Ohjelma merkkijonon lajitteluun Pythonissa
Alla on luettelo menetelmistä, joita käsittelemme:
- Join() and lajiteltu()
- Alkuperäisen menetelmän käyttäminen
- Käytä lajiteltua toimintoa kanssa vähentää() ja lambda
- Käyttämällä Kuplalajittelu
- Käyttämällä Yhdistä lajittelu menetelmä
- Käyttää sanakirja
Ohjelma lajitella merkkijono komennolla join() ja sorted()
Yllä olevien toimintojen yhdistelmä voi mahdollisesti ratkaista tämän ongelman. Tämä tehtävä suoritetaan 2. vaiheessa jossa ensimmäisessä vaiheessa saamme lajiteltujen merkkien luettelon ja sitten yhdistämme tuloksen saadaksemme resultantin lajiteltu merkkijono.
Python 3
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))> |
Lähtö
The original string : geekforgeeks String after sorting : eeeefggkkors
Aika monimutkaisuus: Koodin aikamonimutkaisuus on O(n log n).
Tilan monimutkaisuus: Annetun koodin avaruuden kompleksisuus on O(n).
Lajittele Python-merkkijono u laulaa Native Methodia
Tietyn merkkijonon lajitteleminen käyttäjän syötteellä käyttämällä sisäänrakennettua Python-lajittelumenetelmää.
Python 3
String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')> |
Lähtö:
Original String: geekforgeeks Sorted String: eeeefggkkors
Aika monimutkaisuus: Koodin aikamonimutkaisuus on O(n log n).
Tilan monimutkaisuus: Annetun koodin avaruuden kompleksisuus on O(n).
Lajittele Python-merkkijono käyttämällä reduction()- ja lambda-komentoa
Tämä tietty tehtävä voidaan suorittaa myös käyttämällä yllä olevien toimintojen yhdistelmää. Tässä yhdistetään tuloksena oleva lajiteltu merkkiluettelo käyttämällä lambda-toiminto liittyy vähennystoiminto. Toimii vain Python2:lle
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))> |
Lähtö
The original string : geekforgeeks String after sorting : eeeefggkkors
Aika monimutkaisuus: Koodin aikamonimutkaisuus on O(n log n).
Tilan monimutkaisuus: Annetun koodin avaruuden kompleksisuus on O(n).
Lajittele merkkijono Pythonissa käyttämällä Bubble Sort -toimintoa
Muunna merkkijono merkkiluetteloksi ja käytä sitten kuplalajittelu algoritmi lajitella luettelo nyt liittyä lajiteltu luettelo muodostaa merkkijono.
Python 3
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]>tankit[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))> |
Lähtö
Original string: geekforgeeks String after sorting: eeeefggkkors
Aika monimutkaisuus : O(n^2), koska käytämme kuplalajittelualgoritmia, jonka aikamonimutkaisuus on O(n^2).
Aputila: O(n), koska luomme uuden merkkiluettelon alkuperäisestä merkkijonosta.
Ohjelma lajittelee merkkijonon yhdistämislajittelulla
Tämä lähestymistapa käyttää Yhdistä lajittelu algoritmi merkkijonon merkkien lajitteluun. Se muuntaa ensin merkkijonon merkkiluetteloksi ja jakaa sitten luettelon rekursiivisesti kahtia, kunnes saavutetaan yksittäisen elementin peruskirjain. Molemmat puolikkaat yhdistetään sitten takaisin yhteen lajiteltuun järjestykseen merge()-funktiolla. Lajiteltu luettelo muunnetaan sitten takaisin merkkijonoksi.
Python 3
# 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)> |
Lähtö
String after sorting: eeeefggkkors
Aika monimutkaisuus: O(n log n) missä n on syötemerkkijonon s pituus.
Tilan monimutkaisuus: O(n) missä n on syötemerkkijonon s pituus.
Lajittele merkkijono Python-ohjelmassa sanakirjan avulla
Tämä ohjelma lajittelee syötetyn merkkijonon nousevaan järjestykseen siinä olevien merkkien perusteella. Se laskee kunkin merkin tiheyden sanakirjan avulla ja lajittelee ne sitten merkin ASCII-arvon perusteella.
Python 3
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))> |
Lähtö
Original string: geekforgeeks String after sorting: eeeefggkkors
Aika monimutkaisuus: Tämän algoritmin aikamonimutkaisuus on O(nlogn) sorted()-funktion käytön vuoksi.
Tilan monimutkaisuus: Tämän algoritmin tilamonimutkaisuus on O(n), koska sanakirjaa käytetään kunkin merkin määrän tallentamiseen.