2025-07-30 22:11
Tags: 알고리즘
퀵 정렬
- 분할(partition) 정복(conquer) 분할 정복 이라는 단순하지만 강력한 아이디어 적용
 - 큰 문제를 작은 단위로 나눈 후 작은 문제들을 재귀적으로 해결
 
구조
- 피벗 선택 : 고르는 방법은 겁나 많음
 - 분할
- 피벗보다 작은건 왼쪽, 큰건 오른쪽
 - 피벗을 기준으로 정렬 위치 확보
 
 - 정복(재귀 호출)
- 피벗 기준 좌우 부분에 같은 과정 반복
 - 서브배열 1이하 되면 끝
 
 
파이썬 코드 구현
다만 합병 정렬은 언제나 절반으로 나누고 퀵정렬은 피봇 쓰는등 아래같은 차이 있음
| 구분 | 합병 정렬 | 퀵정렬 | 
|---|---|---|
| 분할 방식 | 항상 절반으로 균등 분할5 | 피벗 기준으로 불균등 분할 가능6 | 
| 정복 방식 | 분할 후 각각 정렬5 | 분할 과정에서 동시에 정렬6 | 
| 결합 방식 | 정렬된 두 부분 배열을 병합5 | 별도 결합 과정 불필요6 | 
| 핵심 연산 | 병합(Merge) | 분할(Partition) |