全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++ 快速排序怎么写 c++快速排序算法代码

快速排序通过基准分治实现高效排序。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 的 vectorswap,代码清晰易懂,适合学习和基础应用。基本上就这些。不复杂但容易忽略边界条件。


# 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小时内与您取得联系。