C++快速排序算法容器
时间: 2024-09-12 17:00:35 浏览: 43
C++:快速排序算法
C++中的快速排序是一种常用的高效排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分继续进行排序,直到整个序列有序。快速排序通常使用递归的方式来实现。
在C++中,可以使用`std::vector`等内置的动态数组容器来存储待排序的数据。首先选择一个元素作为基准(pivot),一般是第一个或最后一个元素。然后,从左到右遍历数组,如果当前元素小于基准,就将其交换到基准的左边;反之,如果大于或等于基准,则留在右边。这个过程被称为分区操作。接着,递归地对基准左侧和右侧的子数组进行同样的排序。
以下是一个简单的快速排序C++示例,使用`std::vector`:
```cpp
#include <vector>
#include <algorithm>
void quickSort(std::vector<int>& arr, int low, int high) {
if (low < high) {
// Partition operation
int pivot = arr[high]; // Choose last element as pivot
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]); // Move pivot to its correct position
int pi = i + 1;
// Recursively sort two subarrays
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// Usage example
int main() {
std::vector<int> numbers = {9, 7, 5, 11, 12, 2, 14, 3, 10};
quickSort(numbers, 0, numbers.size() - 1);
for (const auto& num : numbers) {
std::cout << num << " ";
}
return 0;
}
```
阅读全文