[python] 퀵 정렬

퀵 정렬은 분할 정복 알고리즘의 일종으로, 평균적으로 매우 빠른 정렬 알고리즘입니다. 특히 대규모의 데이터를 정렬하는 데 효율적입니다.

알고리즘 설명

  1. 기준점(Pivot)을 선택합니다. 일반적으로 첫 번째 원소를 선택합니다.
  2. 리스트를 기준점을 기준으로 작은 값과 큰 값으로 분할합니다.
  3. 분할된 두 개의 부분 리스트에 대해 재귀적으로 퀵 정렬을 수행합니다.
  4. 재귀적인 호출이 끝난 뒤, 부분 리스트를 순서대로 합쳐 전체 리스트를 정렬합니다.

Python 코드 예제

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        smaller = [x for x in arr[1:] if x <= pivot]
        greater = [x for x in arr[1:] if x > pivot]
        return quick_sort(smaller) + [pivot] + quick_sort(greater)

arr = [9, 5, 7, 1, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)

위의 예제 코드는 퀵 정렬을 파이썬으로 구현한 것입니다. 퀵 정렬 함수인 quick_sort는 재귀적으로 호출되며, 주어진 리스트를 작은 값과 큰 값으로 분할한 후 합치는 과정을 거쳐 정렬된 새로운 리스트를 반환합니다. 이 예제에서는 입력으로 [9, 5, 7, 1, 3] 리스트를 사용하였고, 정렬된 결과인 [1, 3, 5, 7, 9]를 출력합니다.

시간 복잡도

퀵 정렬의 평균 시간 복잡도는 O(n log n)이며, 최악의 경우 O(n^2)의 시간 복잡도를 가집니다. 그러나 대부분의 경우에 있어서 매우 빠른 성능을 보여주기 때문에 많이 사용되는 정렬 알고리즘 중 하나입니다.

참고 자료