快速排序及其优化

发布时间:2026/9/30 16:09:00

快速排序及其优化 快排基础性质配套背诵平均时间\(O(nlogn)\)最坏时间\(O(n^2)\)有序 选端点做基准空间复杂度递归栈平均\(O(logn)\)最坏\(O(n)\)不稳定排序// 快速排序的一次划分int Partition (int* arr, int low, int high)//O (n),O (1){int tmp arr [low];// 基准while (low high){// 从后往前找比基准小的数字往前移动while (lowhigh arr [high] tmp){high--;}if (low high){arr [low] arr [high];}// 从前往后找比基准大的数据往后移动while (low high arr [low] tmp){low;}if (low high){arr [high] arr [low];}}arr [low] tmp;return low;}void Quick (int* arr,int low, int high){int par Partition (arr, low,high);if (low par - 1)// 左边的数据个数超过一个{Quick (arr, low, par - 1);}if (par 1 high){Quick (arr, par 1, high);}}// 快速排序void QuickSort (int* arr, int len)//(nlogn),O (logn), 不稳定 (缺点){Quick (arr, 0, len - 1);}快速排序的优化数据结构考试高频简答快排核心问题选到极差基准如最大 / 最小值退化为\(O(n^2)\)优化全部围绕基准、递归、小规模数组展开。1. 基准元素优化最常考① 三数取中法median-of-three取左端、右端、中间位置三个数选中间大小的值作为 pivot。避免在有序 / 逆序数组选到最值当基准大幅减少最坏情况概率。缺点多几次比较小规模数组收益不大。② 随机选基准随机在区间选一个元素作为 pivot。理论上避免有序数组退化适合数据分布未知场景。缺点随机数有开销考试里常和三数取中二选一。2. 小规模子数组改用直接插入排序当待排序区间长度很小一般阈值取 7~10不再递归快排直接插入排序。 原因 递归调用有栈开销小数组时直接插入常数更小比快排更快。3. 减少递归栈开销尾递归优化快排递归处理左右两段会产生递归栈。 优化思路优先递归短区间长区间改用循环处理。作用降低递归栈深度防止有序数据时栈溢出。最坏栈空间由\(O(n)\) → \(O(logn)\)void Quick(int* arr,int low, int high) { while(low high) // 长区间交给循环不压栈 { int par Partition(arr, low,high); // 左右区间选短的去递归长区间继续while if(par - low high - par) { Quick(arr, low, par - 1); // 短区间递归 low par 1; // 长区间留在循环 } else { Quick(arr, par 1, high); // 短区间递归 high par - 1; // 长区间留在循环 } } }4. 三路快排划分优化复试常考普通快排分成小于 pivot、大于 pivot 两段。 三路快排划分成三块小于 pivot、等于 pivot、大于 pivot✅ 适合大量重复元素的数组大量相等元素不再重复递归性能提升巨大。void Quick3way(int arr[], int low, int high) { if(low high) return; int pivot arr[low]; int lt low, gt high; int i low 1; while(i gt) { if(arr[i] pivot) { swap(arr[i], arr[lt]); lt; i; } else if(arr[i] pivot) { swap(arr[i], arr[gt]); gt--; } else // arr[i]pivot直接跳过 { i; } } // [low,lt-1]pivot , [lt,gt]pivot , [gt1,high]pivot Quick3way(arr, low, lt-1); Quick3way(arr, gt1, high); }5. 聚集相等元素另一种重复元素优化划分时把等于基准的元素放中间减少后续递归范围。
延伸阅读

更多相关文章

2026/9/30 16:09:00

AI视频运镜提示词实战指南:让镜头真正动起来

1. 项目概述:为什么“运镜提示词”正在成为AI漫剧创作的隐形门槛最近帮三个做原创漫剧的朋友调试AI视频生成流程,发现一个特别有意思的现象:他们用的都是同一款主流AI视频工具,输入的剧情文本、角色设定、画风描述几乎一模一样&am…

2026/9/30 16:09:00

大模型量化部署全攻略:INT4、GPTQ/AWQ与显存避坑指南

最近手里的显存又告急了。一个35B级别的MoE模型,FP16权重文件就要70GB往上,单卡放不下,双卡又嫌推理太慢。后来把模型量化到INT4,整体体积砍掉近70%,在24GB的消费级显卡上也能跑得动,生成速度还快了不少。说…

2026/9/30 16:09:00

CentOS 7 离线部署 GNOME 桌面与 XRDP 远程接入

1. 为什么在 CentOS 7 上要装桌面再远程接入老实说,一台 CentOS 7 服务器装图形化界面,在很多运维老哥眼里属于"没事找事"。命令行能干的事,图形界面除了吃内存看不出别的用处。但实际项目跑起来,总有一些绕不开的场景&…

2026/9/30 17:04:37

等保说的内外网隔离,要隔到什么程度才算过关

等保体系里的「内外网隔离」,不是拔网线,是国标 22239《信息安全技术 网络安全等级保护基本要求》规定的一组控制项。很多单位以为装个防火墙就算隔离,测评时在边界防护、访问控制、安全审计三处被扣分。先拆解隔离在等保里落在哪。国标 2223…

2026/9/30 17:04:37

2026企业AI办公工具选型指南:评估框架与平台盘点

企业采购AI办公工具时,很容易陷入几个典型误区。不少管理者会直接对比产品功能清单,以功能数量多少作为评判标准;还有团队单纯依据报价高低,优先选择成本最低的方案;部分选型决策会被品牌声量影响,直接选用…

2026/9/30 17:04:37

Codex 新手入门与常见问题排查指南

先说一下:有需要订阅 Codex 会员服务 的朋友。长期提供 Codex、GPT、Claude、Gemini、Grok等 相关订阅服务,也可以交流 Codex 安装、使用以及科研场景下的实际应用,有需要可以私信。 订阅服务入口:订阅升级服务 刚开始接触大模型 …

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑