[java] 파이썬에서 퀵 정렬 구현하기

퀵 정렬(Quick Sort)은 분할 정복 알고리즘을 사용하여 구현된 정렬 알고리즘 중 하나입니다. 이 알고리즘은 리스트를 피벗(pivot)을 기준으로 두 개의 하위 리스트로 분할하고, 각 하위 리스트를 재귀적으로 정렬하는 방식으로 동작합니다.

알고리즘 개요

퀵 정렬 알고리즘의 개요는 다음과 같습니다:

  1. 리스트에서 하나의 요소를 피벗으로 선택합니다.
  2. 피벗을 기준으로 두 개의 하위 리스트로 분할합니다. 하위 리스트 한 개에는 피벗보다 작은 요소들, 다른 하위 리스트에는 큰 요소들이 위치하도록 합니다.
  3. 각 하위 리스트에 대해 재귀적으로 퀵 정렬을 수행합니다.
  4. 재귀가 더 이상 적용되지 않고 정렬이 완료된 리스트를 반환합니다.

파이썬 코드 구현

다음은 파이썬에서 퀵 정렬을 구현한 예제 코드입니다.

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

예시

다음은 퀵 정렬 함수를 사용한 예시 코드입니다.

arr = [3, 6, 8, 10, 1, 2, 1]
print(quick_sort(arr))

출력:

[1, 1, 2, 3, 6, 8, 10]

퀵 정렬은 평균적으로 빠른 실행 속도를 가지고 있어 많은 프로그래밍 언어에서 표준 정렬 라이브러리의 기반으로 사용됩니다.

참고 자료