数据结构解决的问题:“快” + “省”,即为时间,空间复杂度分析
1:为什么需要复杂度分析?
因为通过统计手段分析的结果受到两个因素的影响,一:测试结果非常依赖测试环境,二:测试结果受数据规模的影响很大
2:大O复杂度表示法
所有代码的执行时间T(n)与每行代码的执行次数n成正比。
T(n) = O(f(n))
3:时间复杂度分析: 渐进时间复杂度
1:只关注循环执行次数最多的一段代码
2:加法法则:总复杂度等于量级最大的那段代码的复杂度
3:乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
4:几种常见时间复杂度量级:
多项式量级:
u 常数阶O(1)
u 对数阶O(logn)
u 线性阶O(n)
u 线性对数阶O(nlogn)
u 平方阶O(n*n),立方阶O(n*n*n)… k方阶O(n*……*n)
非多项式量级:
u 指数阶O(2*……*2)
u 阶乘阶O(n!)
5:空间复杂度分析: 渐进空间复杂度
常见的空间复杂度:O(1) O(n) O(n*n)