复杂度分析
复杂度分析
复杂度分析是衡量算法执行效率的重要方法。
事后统计法
直接执行代码,并且进行监控统计,获得代码执行效率。
弊端:
测试结果依赖测试环境
测试结果受数据规模的影响
时间复杂度分析
大O时间复杂度:表示代码执行时间随数据规模增长的变化趋势,也叫渐进时间复杂度,简称时间复杂度
分析方法:
只关注循环执行次数最多的一段代码
加法法则:总复杂度等于量级最大的那段代码的复杂度
乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
同一段代码,在不同输入的情况下,复杂度量级可能会不同。
最好情况时间复杂度分析
最理想情况下,执行这段代码的时间复杂度
最坏情况时间复杂度
最糟糕情况下,执行这段代码的时间复杂度
平均情况时间复杂度
对于所有可能的输入,及其发生的概率,求加权平均,得到的值即为平均情况时间复杂度,也叫加权平均时间复杂度或者期望时间复杂度
均摊时间复杂度
对于复杂度为O(n)的操作,都会跟着n-1个复杂度为O(1)的操作,此时,考察是否可以使用摊还分析,将耗时最多的那次操作,均摊到耗时较少的操作上,从而求得均摊时间复杂度。
空间复杂度分析
空间复杂度:表示代码的存储空间与数据规模的增长关系
Last updated
Was this helpful?