快速排序通过基准分治实现高效排序。1. 选择末尾元素为基准,使用双指针划分数组;2. partition函数确定基准正确位置;3. quickSort递归处理左右子区间;4. 平均时间复杂度O(n log n),最坏O(n²);5. C++代码利用vector和swap,简洁清晰,适合学习应用。
快速排序是一种高效的递归排序算法,通过选择一个“基准”元素将数组分为两部分,左侧小于基准,右侧大于基准,再对两部分分别排序。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() {
vectorarr = {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++
# ai
# ios
# stream
# 排序算法
# 递归
# 快速排序
# 指针
# 算法
# 两部分
# 最坏
# 是一种
# 中来
# 两段
# 再对
# 最小值
# 效率高
# public
相关文章:
名字制作网站免费,所有小说网站的名字?
网站企业制作流程,用什么语言做企业网站比较好?
如何通过二级域名建站提升品牌影响力?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
如何构建满足综合性能需求的优质建站方案?
如何通过建站之星自助学习解决操作问题?
为什么Go需要go mod文件_Go go mod文件作用说明
建站之星多图banner生成与模板自定义指南
怎么将XML数据可视化 D3.js加载XML
香港服务器租用费用高吗?如何避免常见误区?
定制建站是什么?如何实现个性化需求?
如何快速搭建高效WAP手机网站吸引移动用户?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
韩国服务器如何优化跨境访问实现高效连接?
如何选择高性价比服务器搭建个人网站?
Python路径拼接规范_跨平台处理说明【指导】
如何用花生壳三步快速搭建专属网站?
,sp开头的版面叫什么?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何在橙子建站中快速调整背景颜色?
如何通过虚拟主机空间快速建站?
如何高效生成建站之星成品网站源码?
定制建站价位费用解析与套餐推荐全攻略
网站制作网站,深圳做网站哪家比较好?
如何用已有域名快速搭建网站?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何在IIS中新建站点并解决端口绑定冲突?
建站之星logo尺寸如何设置最合适?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何用美橙互联一键搭建多站合一网站?
盐城做公司网站,江苏电子版退休证办理流程?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何生成腾讯云建站专用兑换码?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何选择高效可靠的多用户建站源码资源?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
大同网页,大同瑞慈医院官网?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
长沙做网站要多少钱,长沙国安网络怎么样?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何在阿里云完成域名注册与建站?
如何快速重置建站主机并恢复默认配置?
如何用虚拟主机快速搭建网站?详细步骤解析
如何制作网站标识牌,动态网站如何制作(教程)?
动图在线制作网站有哪些,滑动动图图集怎么做?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
jQuery 常见小例汇总
*请认真填写需求信息,我们会在24小时内与您取得联系。