Програма Python для сортування рядка

Сортування завжди була досить популярною утилітою з великою кількістю додатків скрізь, де вибирається мова Python. Python у своїй мові пропонує функцію сортування для виконання цього завдання. Але оскільки не всі контейнери Python є змінними, наприклад рядок, функція сортування не працює, оскільки вона на місці намагається сортувати, і незмінність зупиняє це. Давайте обговоримо конкретні способи сортування рядка.

приклад

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

Програма для сортування рядка в Python

Нижче наведено списки методів, які ми розглянемо:

Програма для сортування рядка за допомогою join() і sorted()

Комбінація вищевказаних функцій може потенційно вирішити цю конкретну проблему. Це завдання виконується на 2 кроці у якому на першому кроці ми отримуємо відсортований список символів, а потім об’єднуємо результат, щоб отримати результат відсортований рядок.

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

Вихід

The original string : geekforgeeks String after sorting : eeeefggkkors 

Часова складність: Часова складність коду становить O(n log n).
Космічна складність: Просторова складність даного коду дорівнює O(n).

Сортування рядка Python u співати Рідний метод

Щоб відсортувати заданий рядок за допомогою введення користувача за допомогою вбудованого методу сортування Python.

Python3




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

Вихід:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Часова складність: Часова складність коду становить O(n log n).
Космічна складність: Просторова складність даного коду дорівнює O(n).

Відсортуйте рядок Python за допомогою reduce() і лямбда

Це конкретне завдання також можна виконати за допомогою комбінації вищезазначених функцій. Тут ми об’єднуємо отриманий відсортований список символів за допомогою лямбда-функція об’єднується функцією зменшення. Працює лише для 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))>

Вихід

The original string : geekforgeeks String after sorting : eeeefggkkors 

Часова складність: Часова складність коду становить O(n log n).
Космічна складність: Просторова складність даного коду дорівнює O(n).

Сортувати рядок у Python за допомогою Bubble Sort

Перетворіть рядок на список символів, а потім використовуйте бульбашковий сорт алгоритм для сортування списку тепер приєднується до сортованого списку для формування рядка.

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]>танки[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))>

Вихід

Original string: geekforgeeks String after sorting: eeeefggkkors 

Часова складність : O(n^2), оскільки ми використовуємо алгоритм бульбашкового сортування, який має часову складність O(n^2).
Допоміжний простір: O(n), оскільки ми створюємо новий список символів із оригінального рядка.

Програма сортування рядка за допомогою сортування злиттям

Цей підхід використовує сортування злиттям алгоритм сортування символів у рядку. Спочатку він перетворює рядок на список символів, а потім рекурсивно ділить список навпіл, поки не буде досягнуто базовий регістр одного елемента. Потім дві половини об’єднуються разом у відсортованому порядку за допомогою функції merge(). Потім відсортований список перетворюється назад у рядок.

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

Вихід

String after sorting: eeeefggkkors 

Часова складність: O(n log n) де n - довжина вхідного рядка s.
Просторова складність: O(n) де n - довжина вхідного рядка s.

Сортування рядка в програмі Python за допомогою словника

Ця програма сортує заданий вхідний рядок у порядку зростання на основі наявних у ньому символів. Він використовує словник для підрахунку частоти кожного символу, а потім сортує їх на основі значення ASCII символу.

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

Вихід

Original string: geekforgeeks String after sorting: eeeefggkkors 

Часова складність: Часова складність цього алгоритму становить O(nlogn) через використання функції sorted().
Космічна складність: Просторова складність цього алгоритму становить O(n) завдяки використанню словника для зберігання кількості кожного символу.