Python의 빠른 정렬

Muhammad Waiz Khan 2023년1월30일
  1. numpy.sort()메소드를 사용하여 Python에서 빠른 정렬
  2. Pandas 라이브러리의Series.sort_values()메서드를 사용하여 Python에서 빠른 정렬
  3. Python에서 빠른 정렬 구현
Python의 빠른 정렬

이 튜토리얼은 파이썬에서 빠른 정렬 알고리즘을 구현하고 적용하는 방법을 설명합니다.

빠른 정렬은 분할 및 정복 알고리즘입니다. 빠른 정렬은 배열에서 피벗으로 요소를 선택한 다음 한 배열의 피벗보다 작은 요소와 다른 배열의 피벗보다 큰 요소를 배치하여 선택한 피벗 주변의 배열을 하위 배열로 분할합니다. 배열에 중복 요소가 포함 된 경우 피벗과 같은 요소는 알고리즘 구현에 따라 세 번째 하위 배열 또는 두 하위 배열 중 하나에 배치 될 수 있습니다. 배열은 재귀 호출을 통해 하위 배열을 정렬하여 빠른 정렬로 정렬됩니다.

빠른 정렬 알고리즘은 요소를 비교하여 정렬하므로 비교 정렬 알고리즘에 속합니다.

numpy.sort()메소드를 사용하여 Python에서 빠른 정렬

numpy.sort(array, axis, kind)메소드는 배열을 입력으로 취하고 입력 배열의 정렬 된 복사본을 출력으로 반환합니다. array매개 변수는 정렬하려는 배열이고axis는 배열을 정렬하려는 기준이며kind는 메소드가 배열을 정렬하는 데 사용할 알고리즘을 지정하며 기본값은 빠름입니다. 종류.

아래 예제 코드는numpy.sort()메서드를 사용하여 Python에서 빠른 정렬을 사용하여 배열을 정렬하는 방법을 보여줍니다.

import numpy as np

a = np.array([2, 3, 6, 5, 7, 8, 3, 1])

sorted_a = np.sort(a, kind="quick sort")
print(sorted_a)

출력:

[1 2 3 3 5 6 7 8]

Pandas 라이브러리의Series.sort_values()메서드를 사용하여 Python에서 빠른 정렬

Pandas 라이브러리의Series.sort_values(ascending, inplace, kind)메소드는 Pandas Series를 입력으로 사용하고 정렬 된 시리즈를 반환합니다.

ascending인수 기본값은True이므로 메소드는 오름차순으로 계열을 정렬합니다. False로 설정된 경우Series가 내림차순으로 정렬됩니다. inplace인수가True로 설정되면 원래 시리즈에서 변경됩니다. 그렇지 않으면 정렬 된 입력 사본이 반환됩니다. kind인수는 시리즈를 정렬하는 데 사용할 알고리즘 방법을 결정하며이 방법은 기본적으로 빠른 정렬 알고리즘을 사용합니다.

아래 예제 코드는Series.sortvalues()를 사용하여 빠른 정렬 알고리즘을 사용하여 Python에서 시리즈를 정렬하는 방법을 보여줍니다.

import pandas as pd

s = pd.Series([1, 2, 4, 2, 7, 5, 3, 2, 6, 8])

s.sort_values(inplace=True, kind="quick sort")
print(s)

출력:

0    1
1    2
3    2
7    2
6    3
2    4
5    5
8    6
4    7
9    8
dtype: int64

Python에서 빠른 정렬 구현

세 번째 방법은 Python에서 자체적으로 빠른 정렬 알고리즘을 구현하는 것입니다.

빠른 정렬의 다음 코드 구현은 배열을 3 개의 하위 배열로 나누고, 하나의 하위 배열에는 피벗보다 작은 요소가 포함되고, 하나에는 피벗보다 큰 요소가 포함되며, 세 번째 하위 배열에는 피벗과 동일한 요소가 포함됩니다.

메서드를 호출 할 때마다 피벗보다 작은 값과 큰 값을 분리하므로 피벗의 정렬 된 위치를 얻습니다. 그리고 재귀 호출을 통해 완전한 정렬 배열을 얻습니다.

아래 예제 코드는 위에서 설명한 Python에서 빠른 정렬 알고리즘을 구현하는 방법을 보여줍니다.

def sort(array):

    left = []
    equal = []
    right = []

    if len(array) > 1:
        pivot = array[0]
        for x in array:
            if x < pivot:
                left.append(x)
            elif x == pivot:
                equal.append(x)
            elif x > pivot:
                greater.append(x)

        return (
            sort(left) + equal + sort(greater)
        )  # recursive calling of the sort() function

    else:  # return the array, when it contains only 1 element
        return array

관련 문장 - Python Sort