当前位置: 首页 > news >正文

快速排序优化

快速排序优化:随机化基准值避免复杂度退化

为什么需要随机化选取基准值?

  • 选第一个元素作为基准:升序/降序数组会让快排复杂度退化为 O(n²)
  • 选中间元素作为基准:存在 "Anti-QuickSort" 恶意数据,同样会退化为 O(n²)
  • 随机化基准:从根本上避免被构造的数据 Hack,保证平均 O(n log n) 复杂度
// 这里要加入随机化取pivot,也就是基准的原因是
/*
你上面取第一个是pivot,这个是你自己构造了一个数组,让这个数组的第一个数字,刚好是这个数组的中间
的那个数字
出题人完全可以构造一个恶心的数据可以让你的复杂度退化导N的2
选第一个: 升序/降序数组就能杀掉你。
选中间: 有一种数据叫 "Anti-QuickSort",专门通过复杂的交错顺序让“选中间”的快排退化成 O(n^2)
*/
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime> // 用于随机数种子
template <typename T>
void QuickSort(T a[], int l, int r) {// 1. 递归终止条件if (l >= r) return;// 2. 随机化基准值(防止被 Hack 到 O(n^2))// 在 [l, r] 范围内随机选一个索引,并将其值作为 pivotT pivot = a[l + rand() % (r - l + 1)];// 3. 双指针核心逻辑 (Hoare Partition)int i = l - 1, j = r + 1;while (i < j) {// 从左往右找第一个 >= pivot 的数do i++; while (a[i] < pivot);// 从右往左找第一个 <= pivot 的数do j--; while (a[j] > pivot);// 如果指针没相遇,交换这两个数if (i < j) std::swap(a[i], a[j]);}// 4. 递归处理左右两部分// 注意:Hoare 划分后,区间被分为 [l, j] 和 [j + 1, r]QuickSort(a, l, j);QuickSort(a, j + 1, r);
}// 为了方便调用,封装一个带长度参数的版本
template <typename T>
void QuickSort(T a[], int len) {if (len <= 1) return;srand(time(0)); // 初始化随机数种子QuickSort(a, 0, len - 1);
}
http://www.jsqmd.com/news/436708/

相关文章:

  • 2026年3月北京工业设计公司推荐:产品、外观、结构、设备、仪器、机器人、产品外观设计公司,上品设计解锁创新新路径 - 海棠依旧大
  • 告别PPT制作噩梦!这些神器让你效率狂飙 - 品牌测评鉴赏家
  • 2026年桂林旅游旅公司最新推荐:桂林旅行、阳朔旅游、阳朔旅行、龙胜旅游、桂林自由行、桂林定制游、桂林私家团厂家选择指南 - 海棠依旧大
  • 2026年无锡搬家公司最新推荐:居民搬家、 钢琴搬运、鱼缸搬家、 长途搬家、 大件搬运、 设备搬迁、 仪器搬运、 日式搬家、 空调移机拆装公司选择指南 - 海棠依旧大
  • 52pj2026春节红包解题-安卓中级
  • 2026年3月塑料中空格子板片生产线厂家最新推荐,中空板材智能生产线 - 品牌鉴赏师
  • 2026山东碳化硼厂家优选推荐榜:碳化硼粉/高丰度碳化硼/碳化硼陶瓷/无压碳化硼/热压碳化硼/超细碳化硼/高纯碳化硼/碳化硼球/碳化硼喷嘴,华恩领衔品质突围 - 海棠依旧大
  • 厦门家长必看!小学自然拼读补习班大盘点 - 品牌测评鉴赏家
  • 2026年南京复印机出租优质服务商推荐榜:打印机租赁、复印机租赁、复印机销售、复印机租赁、打印机出租、会展复议出租厂家选择指南 - 海棠依旧大
  • 厦门家长必看!精选口才课机构大揭秘 - 品牌测评鉴赏家
  • 有实力的橡胶木生产厂家推荐 - 品牌推荐(官方)
  • 2026年成都知识产权交易服务平台推荐,精选5大优质电商平台解锁交易新体验 - 睿易优选
  • 2026年山东升降机厂家权威榜单:液压升降机、移动升降机、自行走升降机、升降平台、卸货平台、液压升降平台厂家选择安全高效适配多场景 - 海棠依旧大
  • 2026年山东真空泵厂家推荐榜:2BV真空泵、2BE真空泵、2BV水环式真空泵、2BE水环式真空泵厂家选择以技术实力筑牢工业真空根基 - 海棠依旧大
  • 解放双手!PPT生成工具大盘点,效率UPUP! - 品牌测评鉴赏家
  • 深度神经网络到AI大语言模型:一场被“误认为突然发生”的技巧演进
  • 防御式PHP代码,让代码“拒绝”出错
  • 大数据领域Kafka与实时数据处理的完美结合
  • 彼得林奇的“市场领导者“转型能力评估
  • Git 热修复流程
  • 厦门家长闭眼入!口才机构红榜出炉 - 品牌测评鉴赏家
  • 告别假努力:实测5款文献阅读神器,帮你从入门到高效!
  • 自适应推理算法中神经编程的突破性进展
  • Git 远程仓库
  • openclaw切换模型
  • 大模型性能测试,到底在测什么?模型层 vs Agent 层一次讲清
  • 行业内橡胶木源头厂家推荐排行榜 - 品牌推荐(官方)
  • 实测4家!初中阅读理解网校推荐,避坑不花冤枉钱,家长直接收藏 - 品牌测评鉴赏家
  • 2026年商用咖啡机厂家推荐:聚焦餐饮与零售场景评价,直击效率与成本痛点 - 品牌推荐
  • 救命!高中阅读理解总丢分?实测4家顶尖网校,避坑不踩雷 - 品牌测评鉴赏家