快速排序通过基准分治实现高效排序。1. 选择末尾元素为基准,使用双指针划分数组;2. partition函数确定基准正确位置;3. quickSort递归处理左右子区间;4. 平均时间复杂度O(n log n),最坏O(n²);5. C++代码利用vector和swap,简洁清晰,适合学习应用。

快速排序是一种高效的递归排序算法,通过选择一个“基准”元素将数组分为两部分,左侧小于基准,右侧大于基准,再对两部分分别排序。C++ 中实现快排代码简洁且效率高。
基本思路
选取一个基准值(通常选首元素或尾元素),使用双指针从两端向中间扫描,调整元素位置使小的在左、大的在右,递归处理左右两段。
C++ 快速排序代码实现
#include
#include
using namespace std;
// 分区函数:将数组按基准分成两部分
int partition(vector& arr, int low, int high) {
int pivot = arr[high]; // 以最后一个元素为基准
int i = low - 1; // 小于基准的区域的边界
for (int j = low; j < high; j++) {
if (arr[j] <= pivot) {
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[high]); // 基准放到正确位置
return i + 1;
}
// 快速排序主函数
void quickSort(vector& arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high); // 获取基准索引
quickSort(arr, low, pi - 1); // 排序基准左边
quickSort(arr, pi + 1, high); // 排序基准右边
}
}
// 打印数组
void printArray(const vector& arr) {
for (int num : arr)
cout << num << " ";
cout << endl;
}
// 示例用法
int main() {
vector arr = {10, 7, 8, 9, 1, 5};
int n = arr.size();
cout << "排序前: ";
printArray(arr);
quickSort(arr, 0, n - 1);
cout << "排序后: ";
printArray(arr);
return 0;
}
关键点说明
基准选择影响性能,最坏情况是每次选到最大或最小值,导致时间复杂度退化为 O(n²),平均为 O(n log n)。实际中可随机选基准或三数取中来优化。
该实现使用 STL 的 vector 和 swap,代码清晰易懂,适合学习和基础应用。基本上就这些。不复杂但容易忽略边界条件。
以上就是c++++ 快速排序怎么写 c++快速排序算法代码的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1486983.html
微信扫一扫
支付宝扫一扫