这节课主要是讲了时间复杂度的概念和计算方法,我来上几张图总结一下:
1. 大O时间复杂度概念
这个可以说是比较基础了,再上几张图自己理解一下
- O(1)
- O(N),O(N^2)
- O(logN),O(k^N),O(N!)
示例
- 斐波那契数列(算是一种递归算法的时间复杂度)
由于每一个F(n)你都需要去计算两次(分别是F(n-1)和F(n-2)),所以显然时间复杂度应该是O(2^N),如果F(n)=F(n-1)+F(n-2)+F(n-3),那么时间复杂度就应该是 O(3^N),如果还没有理解的话看下面这张图。
这里明显可以看出有很多的重复计算,如果优化的话将算过的值放进内存里(相当于计算F(n-1)的时候,将F(n-2)的值已经存起来了,那么F(n-2)就不用再计算一遍了),那么时间复杂度可以降低到O(n)
- 常见的四中算法的时间复杂度
这也没啥好说的,就记住就完事了,挺常用的。