5. 算法与分析 (2)
本节主要介绍算法时间复杂度的具体求法和空间复杂度
本文部分ppt、视频截图来自:[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频]
1. 算法分析
1.1 分析算法时间复杂度的基本方法
- 定理1.1
即忽略所有低次幂项和最高次幂系数,体现出增长率的含义
- 计算时间复杂度步骤
- 找出语句频度最大的那条语句作为基本语句
- ☆☆☆计算基本语句的频度得到问题规模 n 的某个函数 f(n)
- 忽略所有低次幂项和最高次幂系数,取其数量级用符号“O”表示
1.2 算法时间复杂度计算
- 时间复杂度受输入数据集影响
有的情况下,算法中基本操作重复执行的次数还随问题的输入数据集不同而不同。
- 时间复杂度计算规则
对于复杂的算法,可以将它的分成几个容易估算的部分,然后利用大O加法法则和乘法法则,计算算法的时间复杂度。
- 加法规则:如果函数 T(n) 可以分解为两个函数的和,则可以分别求解这两个函数的数量级,求两个函数数量级中的最大值,就是 T(n) 的数量级。
- 乘法规则:如果函数 T(n) 可以分解为两个函数的乘积,则可以分别求解这两个函数的数量级,并求两个函数数量级的乘积,就是 T(n) 的数量级。
1.3 算法时间效率的比较
当 n 取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊,如下表所示:
时间复杂度 T(n) 按数量级递增顺序为:
1.4 渐进空间复杂度
- 空间复杂度:算法所需存储空间的度量。
记作 :
S(n) = O( f( n ) )
,其中 n 为问题的规模
- 算法要占用的空间:
- 算法本身要占据的空间,输入/输出,指令,常数,变量等
- 算法要使用的辅助空间
- 算法空间复杂度例子