1
# 算法数据结构体系学习班 - 第1节
# 1. 评估算法优劣的核心指标是什么?
- 时间复杂度(流程决定)
- 常数项时间(实现细节决定)
- 额外空间复杂度(流程决定)
# 2. 什么是时间复杂度?时间复杂度怎么估算?
- 常数时间的操作
- 确定算法流程的总操作数量与样本数量之间的表达式关系
- 只看表达式最高阶项的部分
# 3. 何为常数时间的操作?
- 如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间。
- 称这样的操作为常数时间的操作
# 4. 常见的常数时间的操作
常见的算术运算(+、-、*、/、% 等)
常见的位运算(>>、>>>、<<、|、&、^等)
赋值、比较、自增、自减操作等
数组寻址操作
总之,执行时间固定的操作都是常数时间的操作
反之,执行时间不固定的操作,都不是常数时间的操作
# 5. 如何确定算法流程的总操作数量与样本数量之间的表达式关系?
1,想象该算法流程所处理的数据状况,要按照最差情况来。
2,把整个流程彻底拆分为一个个基本动作,保证每个动作都是常数时间的操作。
3,如果数据量为N,看看基本动作的数量和N是什么关系。
# 6. 如何确定算法流程的时间复杂度?
当完成了表达式的建立,只要把最高阶项留下即可。低阶项都去掉,高阶项的系数也去掉。
记为:O(忽略掉系数的高阶项)
- Big O Notation
上次更新: 2022/12/04, 16:55:22