문자열을 정렬하는 Python 프로그램

정렬 Python 언어가 선택되는 모든 곳에서 많은 응용 프로그램에서 항상 인기 있는 유틸리티였습니다. Python은 해당 언어로 이 작업을 수행하기 위한 정렬 기능을 제공합니다. 그러나 모든 Python 컨테이너가 문자열과 같이 변경 가능한 것은 아니기 때문에 정렬 함수는 정렬을 시도하는 대로 작동하지 않으며 불변성은 이를 중지합니다. 문자열을 정렬할 수 있는 구체적인 방법에 대해 논의해 보겠습니다.

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

Python에서 문자열을 정렬하는 프로그램

다음은 우리가 다룰 방법 목록입니다.

Join()과 sorted()를 사용하여 문자열을 정렬하는 프로그램

위의 기능을 조합하면 이 특정 문제를 잠재적으로 해결할 수 있습니다. 이 작업은 2단계에서 수행됩니다. 첫 번째 단계에서는 정렬된 문자 목록을 얻은 다음 결과를 결합하여 결과를 얻습니다. 정렬된 문자열.

파이썬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))>

산출

The original string : geekforgeeks String after sorting : eeeefggkkors 

시간 복잡도: 코드의 시간 복잡도는 O(n log n)입니다.
공간 복잡도: 주어진 코드의 공간 복잡도는 O(n)입니다.

Python 문자열 정렬 네이티브 메소드 노래하기

내장된 Python 정렬 방법을 사용하여 사용자 입력으로 지정된 문자열을 정렬합니다.

파이썬3




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)입니다.

Reduce() 및 람다를 사용하여 Python 문자열 정렬

이 특정 작업은 위의 기능을 조합하여 수행할 수도 있습니다. 여기서는 다음을 사용하여 결과로 정렬된 문자 목록을 결합합니다. 람다 함수 감소 기능으로 합류했습니다. Python2에서만 작동합니다.

파이썬




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에서 버블 정렬을 사용하여

문자열을 문자 목록으로 변환한 다음 버블 정렬 목록을 정렬하는 알고리즘은 이제 정렬된 목록을 결합하여 문자열을 형성합니다.

파이썬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]>탱크[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() 함수를 사용하여 두 개의 반쪽을 정렬된 순서로 다시 병합합니다. 그런 다음 정렬된 목록이 다시 문자열로 변환됩니다.

파이썬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)>

산출

String after sorting: eeeefggkkors 

시간 복잡도: O(n 로그 n) 여기서 n은 입력 문자열 s의 길이입니다.
공간 복잡도: O(n) 여기서 n은 입력 문자열 s의 길이입니다.

사전을 사용하여 Python 프로그램에서 문자열 정렬

이 프로그램은 주어진 입력 문자열을 그 안에 있는 문자를 기준으로 오름차순으로 정렬합니다. 사전을 사용하여 각 문자의 빈도를 계산한 다음 문자의 ASCII 값을 기준으로 정렬합니다.

파이썬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))>

산출

Original string: geekforgeeks String after sorting: eeeefggkkors 

시간 복잡도: 이 알고리즘의 시간 복잡도는 sorted() 함수를 사용하기 때문에 O(nlogn)입니다.
공간 복잡도: 이 알고리즘의 공간 복잡도는 각 문자 수를 저장하기 위해 사전을 사용하기 때문에 O(n)입니다.