개요
분할 정복 방법을 통해 리스트를 정렬한다.
피봇을 정한 뒤 피봇의 위치를 확정해 가며 정렬한다.
시간 복잡도
최악의 경우 O(n^2), 평균적으로 O(nlogn)이다.
대부분 컴퓨터 아키텍쳐 설계 상 퀵 소트 내부 루프의 캐시 히트율이 높기 때문에, 일반적인 경우에 시간 복잡도 O(nlogn)인 알고리즘보다 빠르다.
코드
void quick_sort(int* arr, int low, int high) {
// base condition
if (low >= high) return;
// divide
int i = low, j = low;
int& pivot = arr[high];
for (; j < high; j++) {
if (arr[j] < pivot) {
swap(arr[i++], arr[j]);
}
}
swap(arr[i], pivot);
// conquer
quick_sort(arr, low, i - 1);
quick_sort(arr, i + 1, high);
}
ref
공부하면서 많이 도움이 되었던 영상
https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC
'알고리즘 > 이론' 카테고리의 다른 글
Bubble Sort (0) | 2022.05.20 |
---|