复杂度分析
分析、统计算法的执行效率和资源消耗
事后统计法
跑一遍代码监控执行时间和占用空间
局限性:收到测试环境和测试数据规模直接影响
大O复杂度表示法
渐进时间复杂度,表示执行时间随数据规模增长的变化趋势
常见复杂度
常量阶 O(1)
对数阶 O(logn)。
线性阶 O(n)
线性对数阶 O(nlogn)
平方阶 O(n^2)
立方阶O(n^3)
k次新O(n^k)
指数价 O(2^n)
阶乘阶 O(n!)
空间复杂度分析
算法的存储空间与数据规模之间的增长关系。
均摊时间复杂度
连续操作中,大部分时间复杂度很低,个别情况下较高,这些操作有前后连贯的时序关系,此时可将较高时间复杂度那次操作耗时平摊到低时间复杂度操作上。
如向数组插入数据,达到上限以二倍容量扩容。
其他
算法选择
时间复杂度、空间复杂度、最好或最差情况、稳定性
如空间占用,假设业务场景需要最小辅助空间,这个角度堆排序就比归并优异
不稳定排序算法:快排、堆排序