这节课主要是讲了时间复杂度的概念和计算方法,我来上几张图总结一下:

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)

  • 常见的四中算法的时间复杂度

这也没啥好说的,就记住就完事了,挺常用的。