데브허브 | DEVHUB | 자료구조 - 퀵 정렬
- 퀵 정렬은 평균적으로 매우 빠르고 추가 메모리 사용이 적은 고성능 정렬 알고리즘입니다. ⚡️
- 병합 정렬과 마찬가지로 재귀를 통한 분할 정복 전략을 사용합니다. 🧩
- 정렬 과정은 배열 요소 중 하나를 '피벗'으로 선택하고, 피벗보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 분할한 뒤 피벗을 가운데에 배치하는 방식으로 진행됩니다. 🎯
- 피벗의 선택은 성능에 결정적인 영향을 미치며, 중간값에 가까울수록 최적, 극단값에 가까울수록 최악의 성능을 보입니다. ↔️
- 이미 정렬된 배열에서는 피벗이 항상 극단값으로 선택되어 최악의 시간 복잡도(O(N^2))를 가질 수 있습니다. 🐢
- 이러한 최악의 경우를 방지하기 위해 무작위 피벗 선택이나 중간값 피벗 선택과 같은 변형 기법이 사용되기도 합니다. 🎲
- 일반적인 경우 퀵 정렬은 N log N의 시간 복잡도를 가지며, 이름처럼 매우 빠른 성능을 보여줍니다. 🚀
- 퀵 정렬 코드는
quickSort와 partition 두 메소드로 구성되며, partition 메소드는 피벗을 기준으로 배열을 나누고 피벗의 최종 위치를 반환합니다. 💻
- 대용량 데이터의 빠른 정렬이 필요하고 추가 메모리 사용을 최소화해야 할 때 유용하게 활용됩니다. 📊
- 피벗을 기준으로 나뉜 왼쪽과 오른쪽 부분에 대해 재귀적으로 동일한 정렬 작업을 반복하여 전체 배열을 정렬합니다. 🔄