[c++] 퀵정렬
퀵정렬(Quick Sort)은 정렬 알고리즘 중 하나로, 분할 정복 알고리즘의 한 예입니다. 배열을 특정한 기준 값(pivot)을 기준으로 분할하고 각 부분을 재귀적으로 정렬하는 방식으로 동작합니다. 이 알고리즘은 평균적으로 가장 빠른 정렬 알고리즘 중 하나로 알려져 있습니다.
코드 예시
아래는 C++로 구현된 퀵정렬의 간단한 예시 코드입니다.
#include <iostream>
#include <vector>
void quickSort(std::vector<int>& arr, int low, int high) {
if (low < high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
std::swap(arr[i], arr[j]);
}
}
std::swap(arr[i + 1], arr[high]);
int pivotIndex = i + 1;
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
int main() {
std::vector<int> arr = {5, 2, 9, 3, 7, 6};
int n = arr.size();
quickSort(arr, 0, n - 1);
std::cout << "Sorted array: ";
for (int num : arr) {
std::cout << num << " ";
}
return 0;
}
위의 코드는 입력 배열을 정렬하는 데에 퀵정렬 알고리즘을 사용한 예시입니다. 크기가 N인 배열을 퀵정렬하는 데에는 일반적으로 평균적으로 O(NlogN) 시간 복잡도가 소요됩니다.
요약
퀵정렬은 효율적인 정렬 알고리즘이나, 최악의 경우에는 O(N^2)의 시간 복잡도를 가질 수 있으므로 이 점을 주의해서 사용해야 합니다. 또한 추가적인 메모리를 사용하지 않는 제자리 정렬(In-place Sorting) 알고리즘이기 때문에 배열을 정렬하는 데에 용이합니다.
더 자세한 정보는 여기에서 확인할 수 있습니다.