ONEPSOFT | 软考学习知识库
speedrun23|第2-7章算法时间空间复杂度速通
用 " 工期估算/用料估算 " 类比。复杂度就是 " 规模变大时,耗时/占内存怎么涨 "。本速通配合同条 calculate40 动画练计算。
一、章节定位
一句话概括:本章讲 " 怎么用大 O 记号刻画算法随数据规模 n 增长的耗时 (时间复杂度) 和占内存 (空间复杂度)",以及主定理算递归复杂度。
二、本章在讲什么(系统性阐述)
复杂度分析像估算 " 工程量随楼高怎么变 ":
for i..n { for j..n { } } → O(n²)。三、教材原文精摘(教程实例 + 标准 CS 补充,已标注)
教程实例(第 7 章算法)原文摘录:普里姆算法时间复杂度为 O(n²)(与图中边数无关);克鲁斯卡尔算法 O(e log₂e)(与顶点数无关);贝尔曼 - 福特算法 O(nm)(n 节点 m 边,可检测负权回路);A\* 算法时间复杂度通常为 O(b^d)(b 分支因子,d 最短距离)。
教程约定(归纳):教程对所有算法均以 "O(…)" 记法表达渐进复杂度,以输入规模(n 顶点、e/m 边、V/E 节点边、b/d 树参)为复杂度变量。
大 O 严格定义(标准 CS,教程未直接给,依标准方法构造):若存在正常数 c 和 n₀,使对所有 n≥n₀ 有 0≤f(n)≤c·g(n),则称 f(n)=O(g(n)),即 g(n) 是 f(n) 的渐进上界。
主定理(标准 CS,教程未直接给):对 T(n)=aT(n/b)+f(n)(a≥1,b>1 常数):比较 f(n) 与 n^(log_b a) 三情形定阶(见上 " 本章在讲什么 ")。
逐段讲解:
四、核心知识树
算法复杂度
├── 大 O 记号
│ └── 渐进上界 (丢常数低阶)
├── 常见阶数
│ └── 1\
│ └── 层阶相乘
└── 主定理
└── T(n)=aT(n/b)+f(n) 三情形
五、知识脑图总结
思维导图(结构化呈现)
六、关键概念速解
| 概念 | 定义(标准/CS) | 大白话速解 | 考试怎么考 |
|---|---|---|---|
| 时间复杂度 | 运行时间随 n 趋势 | 耗时怎么涨 | 选择/计算:判阶 |
| 空间复杂度 | 额外内存随 n 趋势 | 占内存怎么涨 | 选择:与时间的区分 |
| O(1) | 常数阶 | 与规模无关 | 选择:阶数排序 |
| O(n²) | 平方阶 | 双层循环 | 选择:嵌套循环 |
| O(2ⁿ) | 指数阶 | 爆炸增长 | 选择:最慢阶 |
| 主定理 | 递归三情形 | 分治速算表 | 计算:归并/快排阶 |
七、记忆口诀 & 类比
八、易混淆点对比
| 易混项 A | 易混项 B | 核心区别 |
|---|---|---|
| 时间复杂度 | 空间复杂度 | 时间=耗时趋势;空间=内存趋势 |
| O(n) | O(n²) | 单层循环 vs 双层嵌套循环 |
| O(n log n) | O(n²) | 分治排序 (快/归并) vs 朴素双重循环 |
| 主定理情形 1 | 情形 3 | 情形 1 叶子主导 (n^log); 情形 3 根主导 (f(n)) |
九、与其他章节的关联
十、考试出题方式
说明:大 O 严格定义与主定理教材片段未逐字收录,本条依标准计算机科学方法构造并明确标注,未伪称教程原文;实例均引自教程第 7 章。