复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。
为什么需要复杂度分析?
事后统计法 :把代码跑一遍,通过统计、监控,得到算法执行的时间和占用的内存大小
这种评估算法执行效率的方法是正确的 , 但是,这种统计方法有非常大的局限性。
1. 测试结果非常依赖测试环境
2.测试结果受数据规模的影响很大
不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。
大O复杂度表示法
时间复杂度分析
1.只关注循环执行次数最多的一段代码
我们在分析一个算法、一段代码的时间复杂度的时候,也只关注循环执行次数最多的那一段代码就可以了。
2.加法法则:总复杂度等于量级最大的那段代码的复杂度
总的时间复杂度等于量级最大的那段代码的时间复杂度。