Rūšiavimas visada buvo gana populiarus įrankis su daugybe programų visur, kur pasirenkama Python kalba. Python savo kalba siūlo rūšiavimo funkciją šiai užduočiai atlikti. Tačiau kadangi ne visi Python konteineriai yra kintami, pvz., eilutė, rūšiavimo funkcija neveikia, nes bandoma rūšiuoti, o nekintamumas tai sustabdo. Aptarkime konkrečius būdus, kuriais eilutę galima rūšiuoti.
Pavyzdys
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.>
Programa, skirta rūšiuoti eilutę Python
Žemiau yra metodų, kuriuos apžvelgsime, sąrašai:
- Naudojant join() ir surūšiuota ()
- Natyvinio metodo naudojimas
- Naudojant rūšiavimo funkciją su sumažinti () ir lambda
- Naudojant Burbulų rūšiavimas
- Naudojant sujungti rūšiuoti metodas
- Naudojant a žodynas
Programa rūšiuoti eilutę naudojant join() ir sorted()
Pirmiau minėtų funkcijų derinys gali išspręsti šią konkrečią problemą. Ši užduotis atliekama 2 žingsnyje kuriame pirmame žingsnyje gauname surūšiuotą simbolių sąrašą ir tada sujungiame rezultatą, kad gautume rezultatą surūšiuota eilutė.
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))> |
>
>
15 iš 100,00Išvestis
The original string : geekforgeeks String after sorting : eeeefggkkors>
Laiko sudėtingumas: Kodo laiko sudėtingumas yra O(n log n).
Erdvės sudėtingumas: Pateikto kodo erdvės sudėtingumas yra O(n).
Rūšiuoti Python eilutę u dainuoti gimtąjį metodą
Norėdami rūšiuoti nurodytą eilutę su vartotojo įvestimi, naudodami integruotą Python rūšiavimo metodą.
Python3
String>=> 'geekforgeeks'> print>(>'Original String: '>, String)> lst>=> list>(String)> lst.sort()> print>(>'Sorted String: '>)> for> i>in> lst:> >print>(i, end>=> '')> |
>
c++ eilutės padalijimas
>
Išvestis:
Original String: geekforgeeks Sorted String: eeeefggkkors>
Laiko sudėtingumas: Kodo laiko sudėtingumas yra O(n log n).
Erdvės sudėtingumas: Pateikto kodo erdvės sudėtingumas yra O(n).
Rūšiuokite Python eilutę naudodami redukcijos () ir lambda
Šią konkrečią užduotį taip pat galima atlikti naudojant aukščiau išvardytų funkcijų derinį. Čia mes sujungiame gautą surūšiuotą simbolių sąrašą naudodami lambda funkcija sujungiama mažinimo funkcija. Veikia tik 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))> |
>
>
sveikasis skaičius į eilutę JavaIšvestis
The original string : geekforgeeks String after sorting : eeeefggkkors>
Laiko sudėtingumas: Kodo laiko sudėtingumas yra O(n log n).
Erdvės sudėtingumas: Pateikto kodo erdvės sudėtingumas yra O(n).
Rūšiuoti eilutę „Python“ naudojant „Bubble Sort“.
Konvertuokite eilutę į simbolių sąrašą, tada naudokite burbulų rūšiavimas algoritmas sąrašui rūšiuoti dabar prisijunkite prie surūšiuoto sąrašo, kad sudarytumėte eilutę.
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]>tankai[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))> |
Word greitosios prieigos įrankių juosta
>
>Išvestis
Original string: geekforgeeks String after sorting: eeeefggkkors>
Laiko sudėtingumas : O(n^2), nes naudojame burbulų rūšiavimo algoritmą, kurio laiko sudėtingumas yra O(n^2).
Pagalbinė erdvė: O(n), nes sukuriame naują simbolių sąrašą iš pradinės eilutės.
Programa, skirta rūšiuoti eilutę naudojant sujungimo rūšiavimą
Šis metodas naudoja sujungti rūšiuoti algoritmas rūšiuoti simbolius eilutėje. Pirmiausia ji paverčia eilutę į simbolių sąrašą, o tada rekursyviai padalija sąrašą per pusę, kol pasiekiama vieno elemento pagrindinė raidė. Tada abi pusės vėl sujungiamos rūšiuota tvarka, naudojant funkciją merge (). Tada surūšiuotas sąrašas vėl konvertuojamas į eilutę.
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)> |
>
>Išvestis
String after sorting: eeeefggkkors>
Laiko sudėtingumas: O(n log n) kur n yra įvesties eilutės s ilgis.
Erdvės sudėtingumas: O(n) kur n yra įvesties eilutės s ilgis.
Rūšiuokite eilutę Python programoje naudodami žodyną
Ši programa rūšiuoja nurodytą įvesties eilutę didėjimo tvarka pagal joje esančius simbolius. Jis naudoja žodyną, kad suskaičiuotų kiekvieno simbolio dažnį ir surūšiuotų juos pagal simbolio ASCII reikšmę.
Python3
neapibrėžtas nuolydis
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))> |
>
>Išvestis
Original string: geekforgeeks String after sorting: eeeefggkkors>
Laiko sudėtingumas: Šio algoritmo laiko sudėtingumas yra O(nlogn) dėl funkcijos sorted() naudojimo.
Erdvės sudėtingumas: Šio algoritmo erdvės sudėtingumas yra O(n), nes kiekvieno simbolio skaičiui saugoti naudojamas žodynas.