[java] 파이썬에서 퀵 정렬 구현하기
퀵 정렬(Quick Sort)은 분할 정복 알고리즘을 사용하여 구현된 정렬 알고리즘 중 하나입니다. 이 알고리즘은 리스트를 피벗(pivot)을 기준으로 두 개의 하위 리스트로 분할하고, 각 하위 리스트를 재귀적으로 정렬하는 방식으로 동작합니다.
알고리즘 개요
퀵 정렬 알고리즘의 개요는 다음과 같습니다:
- 리스트에서 하나의 요소를 피벗으로 선택합니다.
- 피벗을 기준으로 두 개의 하위 리스트로 분할합니다. 하위 리스트 한 개에는 피벗보다 작은 요소들, 다른 하위 리스트에는 큰 요소들이 위치하도록 합니다.
- 각 하위 리스트에 대해 재귀적으로 퀵 정렬을 수행합니다.
- 재귀가 더 이상 적용되지 않고 정렬이 완료된 리스트를 반환합니다.
파이썬 코드 구현
다음은 파이썬에서 퀵 정렬을 구현한 예제 코드입니다.
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]
퀵 정렬은 평균적으로 빠른 실행 속도를 가지고 있어 많은 프로그래밍 언어에서 표준 정렬 라이브러리의 기반으로 사용됩니다.
참고 자료
- 파이썬 공식 문서: https://docs.python.org/3/library/stdtypes.html#typesseq
- GeeksforGeeks: https://www.geeksforgeeks.org/quick-sort/