用c++实现快速排序,给出实例
时间: 2024-09-10 12:22:01 浏览: 35
快速排序是一种高效的排序算法,它使用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。以下是C++实现快速排序的示例代码:
```cpp
#include <iostream>
#include <vector>
// 交换两个元素的值
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// 快速排序的分区函数
int partition(std::vector<int>& arr, int low, int high) {
// 选择最后一个元素作为基准
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
// 如果当前元素小于或等于基准
if (arr[j] <= pivot) {
i++; // 移动小于基准的元素的边界
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[high]);
return (i + 1);
}
// 快速排序函数
void quickSort(std::vector<int>& arr, int low, int high) {
if (low < high) {
// pi 是分区索引,arr[pi] 现在在正确的位置
int pi = partition(arr, low, high);
// 分别递归排序基准前后的子数组
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// 主函数,用于测试上面的代码
int main() {
std::vector<int> arr = {10, 7, 8, 9, 1, 5};
int n = arr.size();
quickSort(arr, 0, n - 1);
std::cout << "排序后的数组: \n";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个例子中,`quickSort` 函数实现了快速排序算法,它接受一个整数数组(这里使用`std::vector<int>`表示)和两个表示数组起始和结束位置的索引。`partition` 函数用于找到一个分区点,并在这个点上将数组分为两部分,使得左边的元素都不大于基准,右边的元素都不小于基准。`swap` 函数用于交换两个元素的值。
阅读全文