c++STL快速排序代码
时间: 2024-09-24 14:06:25 浏览: 39
C++ STL库源代码(SGI版本)
C++ STL并没有直接提供快速排序算法,但你可以利用标准模板库(STL)中的`std::sort()`函数来实现排序功能,它底层通常会使用快速排序、归并排序或其他高效的排序算法。如果你想直接看一个C++实现快速排序的例子,可以手动编写。以下是经典的快速排序算法示例:
```cpp
#include <iostream>
#include <vector>
// 快速排序函数
template <typename T>
void quickSort(T arr[], int low, int high) {
if (low < high) {
// 选择基准元素
int pivot = arr[high];
// 定义两个指针,i指向小于基准的最小值位置,j指向大于等于基准的最大值位置
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]);
// 对左半部分和右半部分递归地进行快速排序
quickSort(arr, low, i);
quickSort(arr, i + 2, high);
}
}
int main() {
std::vector<int> vec = {9, 7, 5, 11, 12, 2, 14, 3, 10};
std::cout << "Before sorting:\n";
for (auto num : vec)
std::cout << num << " ";
std::cout << "\n";
quickSort(vec.begin(), vec.end() - 1); // 高效排序,注意结束索引减一避免越界
std::cout << "After sorting:\n";
for (auto num : vec)
std::cout << num << " ";
std::cout << "\n";
return 0;
}
```
阅读全文