408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
这一篇不再详细讲过程重点解决408选择题复杂度、稳定性、空间、初始状态影响、适用场景、外部排序。一、先看408最重要总表排序算法最好平均最坏空间稳定性直接插入O(n)O(n²)O(n²)O(1)稳定折半插入O(n²)*O(n²)O(n²)O(1)稳定希尔与增量有关与增量有关可到O(n²)O(1)不稳定冒泡O(n)O(n²)O(n²)O(1)稳定快速O(n log n)O(n log n)O(n²)O(log n)平均不稳定简单选择O(n²)O(n²)O(n²)O(1)不稳定堆排序O(n log n)O(n log n)O(n log n)O(1)不稳定二路归并O(n log n)O(n log n)O(n log n)O(n)稳定基数O(d(nr))同左同左O(nr)稳定说明折半插入虽然比较次数可降到O(n log n) 但元素移动仍可能O(n²)所以整体仍是O(n²)。二、稳定性秒杀表稳定直接插入 折半插入 冒泡 归并 基数不稳定希尔 快速 简单选择 堆可以记成稳定插冒归基 不稳定希快选堆其中“插”包括直接插入 折半插入三、哪些算法最受初始序列影响直接插入非常受影响。基本有序 - 很快 O(n) 逆序 - O(n²)冒泡也受影响。带提前结束标志时已经有序 - O(n)快速排序非常受pivot和初始序列影响。如果固定选首元素基本有序 / 逆序 - 可能退化到O(n²)简单选择几乎不受初始序列影响。因为每趟都必须扫描整个未排序区间找最小比较次数始终n(n-1)/2堆排序、归并排序时间复杂度较稳定都是O(n log n)四、408场景选择秒杀场景1序列基本有序优先直接插入 冒泡带提前结束最典型直接插入场景2n很小优先直接插入原因实现简单 常数小场景3要求稳定可考虑插入 冒泡 归并 基数场景4要求最坏仍O(n log n)优先堆排序 归并排序不要选快速排序。场景5要求额外空间尽量小可考虑堆排序 O(1)归并O(n)空间更大。场景6大量数据在外存优先归并思想即外部排序 - 多路归并场景7链表排序更适合归并排序因为链表不适合随机访问但归并只需要顺序扫描。五、比较排序的下界如果排序算法只通过比较关键字大小来确定顺序那么平均意义下至少需要Ω(n log n)级别的比较。因此比较排序不可能普遍做到O(n)但基数排序 计数排序 桶排序不完全依赖关键字比较所以可以突破这个限制。六、快排、堆排、归并三大重点横向对比对比快速排序堆排序归并排序平均时间O(n log n)O(n log n)O(n log n)最坏时间O(n²)O(n log n)O(n log n)空间递归栈O(1)O(n)稳定否否是初始序列影响大小小核心操作划分堆调整合并典型优势平均很快最坏稳定、空间小稳定、适合外排408里如果三者放一起比较重点看稳定性 最坏复杂度 空间七、交换次数和比较次数常考结论简单选择排序比较次数n(n-1)/2与初始序列无关。交换次数最多n-1次冒泡排序逆序情况下交换次数最多交换次数等于逆序对数量这是一个很重要的结论。插入排序元素移动量也和逆序对数量高度相关。序列越接近有序插入排序越快八、堆排序的高频计算1. 建大根堆升序时父结点 孩子从最后一个非叶子结点开始向前调整。若n个元素从1开始编号最后一个非叶子结点 floor(n/2)所以建堆时i floor(n/2), ..., 1依次向下调整。2. 每趟输出升序排序堆顶最大把堆顶 - 当前最后元素交换。然后堆大小减1 重新向下调整根九、归并排序的高频计算如果有n个元素每次二路归并归并趟数 ceil(log2 n)例如n 10则ceil(log2 10) 4需要4趟二路归并。每一趟处理全部n个元素因此O(n log n)十、外部排序先理解为什么需要它如果数据太大内存一次装不下就只能磁盘 - 内存反复读写。这叫外部排序外部排序最重要的成本不是CPU比较而是磁盘I/O次数因此目标尽量减少归并趟数十一、外部排序标准流程第一步生成若干初始归并段 第二步对这些归并段进行多路归并 第三步不断归并直到只剩一个有序文件十二、多路归并趟数公式设r 初始归并段数量 k k路归并则归并趟数约为ceil(log_k r)例如16个初始归并段 2路归并需要log2 16 4趟如果改成4路归并则log4 16 2趟所以归并路数越大 归并趟数越少 I/O次数越少十三、败者树是干什么的多路归并时每一轮都要从k个归并段当前元素中找最小值。如果每次普通扫描比较成本较高败者树用于快速从k路中找当前最小元素本质上减少CPU比较次数注意败者树本身不会直接减少归并趟数归并趟数主要取决于初始归并段数量r 归并路数k十四、如何减少外部排序I/O两个最重要方向方法1增大归并路数kk越大 log_k r越小 归并趟数越少方法2减少初始归并段数量r也就是让每个初始归并段更长常见技术置换-选择排序它可以生成比内存容量更长的初始归并段。十五、排序算法“第一反应”表看到题目关键词直接联想基本有序 - 直接插入 每趟最大值到末尾 - 冒泡 pivot归位 - 快速 每趟选最小值 - 简单选择 大根堆/小根堆 - 堆排序 两个有序段合并 - 归并 个位十位百位 - 基数 外存、磁盘I/O - 多路归并十六、稳定性怎么判断判断一个排序是否稳定只看两个关键字相同的元素 排序前后相对顺序会不会被颠倒例如5a 3 5b排序后如果3 5a 5b稳定。如果可能3 5b 5a则不稳定。十七、408选择题最常见陷阱1. 快速排序最快所以任何时候都最好错。最坏O(n²) 不稳定 递归需要额外空间2. 折半插入排序是O(n log n)错。比较少了 移动仍然O(n²)3. 堆排序稳定错。不稳定4. 归并排序空间O(1)错。数组上的二路归并一般需要O(n)辅助空间。5. 简单选择排序在原序列有序时会变快错。比较次数基本不变。6. 希尔排序稳定错。不稳定十八、考前1分钟总表直接插入 稳定O(n²)基本有序最好O(n) 折半插入 稳定比较少整体仍O(n²) 希尔 不稳定原地 冒泡 稳定O(n²)最好O(n) 快速 不稳定平均O(nlogn)最坏O(n²)pivot归位 简单选择 不稳定始终O(n²)比较次数固定 堆 不稳定O(nlogn)O(1)空间 归并 稳定O(nlogn)O(n)空间 基数 稳定非比较排序O(d(nr))十九、强化阶段你最需要练什么排序这一章不建议平均用力。优先级第一档 快速排序 堆排序 归并排序 第二档 直接插入 冒泡 简单选择 第三档 希尔 基数 外部排序每种算法至少练两类题1. 给初始序列问一趟之后结果 2. 给性质判断稳定性/复杂度/适用场景二十、回去复习的位置408数据结构 - 第8章 排序 - 8.1 基本概念 - 插入排序 - 交换排序 - 选择排序 - 归并排序 - 基数排序 - 外部排序 - 排序算法分析与应用最后真正要做到的是看到序列变化 - 认算法 看到场景 - 选算法 看到性质 - 秒判断

相关新闻

DeepSeek    LeetCode 3855. 给定范围内 K 位数字之和 Python3实现

DeepSeek LeetCode 3855. 给定范围内 K 位数字之和 Python3实现

这道题本质上是一个组合数学问题,可以直接通过数学公式高效解决,无需遍历。解题思路每个数的每一位都独立地从 [l, r] 中选择,因此每一位的贡献是独立的。一个 k 位数 d_{k-1}...d_1d_0 可以表示为: 数字和 Σ(d_i 10^i)&#x…

2026/8/10 9:44:17 阅读更多 →
OpenClaw与Qwen-Max大模型用量监控系统搭建实战

OpenClaw与Qwen-Max大模型用量监控系统搭建实战

1. OpenClaw与Qwen-Max用量记录系统搭建指南 最近在部署OpenClaw对接Qwen-Max大模型时,发现官方文档对用量监控部分着墨不多。作为企业级AI应用的关键环节,用量记录不仅关乎成本核算,更是优化资源配置的重要依据。本文将分享我通过OpenClaw C…

2026/8/10 9:44:17 阅读更多 →
混合储能系统Simulink建模与能量管理策略优化

混合储能系统Simulink建模与能量管理策略优化

1. 混合储能系统概述:电池与超级电容的黄金组合 在新能源发电、电动汽车和智能电网领域,储能系统的动态响应能力和循环寿命始终是工程师们面临的痛点。传统锂电池虽然能量密度高,但大电流充放电时容量衰减快;超级电容功率密度出色…

2026/8/10 9:44:17 阅读更多 →

最新新闻

为AI编码助手构建持久记忆:基于向量数据库的agentmemory实践

为AI编码助手构建持久记忆:基于向量数据库的agentmemory实践

1. 项目概述:当AI编码助手有了“记忆” 最近在折腾各种AI编码助手,也就是大家常说的AI Agent,比如Cursor、Claude Code,或者基于开源框架自己搭的。用久了你会发现一个挺烦人的事儿:这些家伙记性太差了。你跟它说“咱们…

2026/8/11 12:07:30 阅读更多 →
Unlock Music:终极音乐解锁指南,3分钟摆脱平台加密限制 [特殊字符]

Unlock Music:终极音乐解锁指南,3分钟摆脱平台加密限制 [特殊字符]

Unlock Music:终极音乐解锁指南,3分钟摆脱平台加密限制 🎵 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.de…

2026/8/11 12:07:30 阅读更多 →
深度解析UE Viewer:如何高效处理虚幻引擎游戏资源的终极指南

深度解析UE Viewer:如何高效处理虚幻引擎游戏资源的终极指南

深度解析UE Viewer:如何高效处理虚幻引擎游戏资源的终极指南 【免费下载链接】UEViewer Viewer and exporter for Unreal Engine 1-4 assets (UE Viewer). 项目地址: https://gitcode.com/gh_mirrors/ue/UEViewer UE Viewer(又称UModel&#xff0…

2026/8/11 12:07:30 阅读更多 →
3个技巧让Windows风扇控制告别噪音:FanControl终极静音方案

3个技巧让Windows风扇控制告别噪音:FanControl终极静音方案

3个技巧让Windows风扇控制告别噪音:FanControl终极静音方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…

2026/8/11 12:07:30 阅读更多 →
Unity中TUIO协议的UDP通信实现与多点触控交互开发

Unity中TUIO协议的UDP通信实现与多点触控交互开发

1. 项目概述与核心价值 最近在做一个多点触控桌面的交互原型,需要Unity能够实时接收来自外部光学触摸框架(比如Community Core Vision这类软件)的触摸点数据。找了一圈,发现最成熟、最通用的方案就是TUIO协议。TUIO本质上是一种基…

2026/8/11 12:07:29 阅读更多 →
AMP精准定量技术:酶学分析与药物筛选的创新平台

AMP精准定量技术:酶学分析与药物筛选的创新平台

简述 本文围绕一磷酸腺苷(AMP)作为关键代谢物和多种酶促反应产物的核心地位,系统阐述基于化学发光法的AMP定量检测技术的原理、优势与应用范围,分析其在酶活性测定、抑制剂筛选和机制研究中的独特价值。一、AMP检测在生命科学研究…

2026/8/11 12:06:29 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →