- 퀵 정렬은 평균적으로 매우 빠른 정렬 속도와 적은 추가 메모리 사용을 자랑하는 고성능 정렬 알고리즘입니다. 🚀
- 병합 정렬과 유사하게 재귀를 활용한 '분할 정복' 전략을 사용하여 배열을 작은 부분으로 나누어 정렬합니다. 🧩
- 배열 요소 중 하나를 '피벗'으로 선택하며, 이 피벗이 중간값에 가까울수록 성능이 좋고, 가장 작거나 큰 값일수록 성능이 저하됩니다. 🎯
- 피벗을 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 분리한 후 피벗을 그 가운데에 위치시키는 '파티셔닝' 작업을 수행합니다. ↔️
- 파티셔닝 후 분리된 왼쪽과 오른쪽 부분 배열에 대해 동일한 정렬 과정을 재귀적으로 반복하여 전체 배열을 정렬합니다. 🔄
- 이미 정렬된 배열(오름차순 또는 내림차순)은 피벗이 항상 극단적인 값으로 선택되어 최악의 시간 복잡도 O(N^2)를 보일 수 있습니다. 📉
- 극단적인 상황이 아니라면 병합 정렬과 같이 평균적으로 O(N log N)의 빠른 시간 복잡도를 가집니다. ⏱️
- 최악의 성능을 피하기 위해 무작위 피벗 선택이나 중간값 피벗 선택과 같은 변형 기법이 사용됩니다. 🎲
quickSort와 partition 두 개의 메소드로 구성되며, partition 메소드는 피벗을 기준으로 요소를 나누고 피벗의 최종 위치를 반환합니다. 💻
- 대용량 데이터의 빠른 정렬이 필요하고 추가 메모리 사용을 최소화해야 할 때 특히 유용하게 사용됩니다. 💾