정렬 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
윈7은 언제 나왔나요?
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
char을 문자열로 변환 java
# 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)입니다.