第一讲参考博客
除了以上博主记录的外:
一般n是计算算法中的乘除法次数,加减法可以忽略。
对于for循环来说,每次占用的内存都是固定的,因此空间复杂度S(N)一定,只考虑T(N)。
- 有3个嵌套的for循环,那么T(N)=O(N的3次方)
- 有2个嵌套的for循环,那么T(N)=O(N的2次方)
- 但当出现O(N的2次方)时候,我们的下意识就是有没有可能将它改写成NlogN。
如何把N的2次方转换成NlogN:
再继续优化,将O(NlogN)变为O(n):
到目前,应该是能想到的最好的算法了,因为遍历一次就需要O(n)。
但是当程序运行的越快时,可读能力就弱了,因此需要加注释。