01_算法复杂度
分析算法复杂度即是分析比较算法性能
分析算法性能从两个方面考虑:
- 运行时间(运行程序所要花费的时间)
- 运行空间出发(运行程序所需要的内存)
一般主要考虑算法的时间复杂度,通过输入的规模来量化算法运行的时间,复杂度是随着输入规模增大的增长趋势。
影响时间复杂度的因素有很多,例如:
- 硬件
- 编译器
- 处理器
- 操作系统安排处理顺序等
因此在考虑时间复杂度时将不考这些影响,假定计算机每步操作都需要一个固定的时间。
算法复杂度记法
O
(
n
)
O(n)
O(n)这个集合当
n
n
n足够大时,增长趋势小于线性函数
O
(
g
(
n
)
)
=
{
f
(
n
)
∣
∃
c
,
n
0
,
s
.
t
.
,
0
⩽
f
(
n
)
⩽
c
g
(
n
)
,
n
⩾
n
0
}
O(g(n)) = \{f(n)|\exists c,n_0,s.t.,0 \leqslant f(n) \leqslant cg(n), n \geqslant n_0\}
O(g(n))={f(n)∣∃c,n0,s.t.,0⩽f(n)⩽cg(n),n⩾n0}