时间复杂度
不是一个具体的时间,而是一个算法执行的基本次数。描述一个算法的时间复杂度,看的是最坏情况下的时间复杂度,使用大O阶渐进表示法。大致思路就是看循环,有几层循环,注意循环的条件。
在大O阶表示法中,用1取代运行时间中所有的加法常数;在最后只保留最高阶的项,若此时最高阶项不为1且最高阶有常数系数,则需要去掉系数。
常见方法的时间复杂度:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7c34efb000cfa2d4954e47f78800320d.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5c6c154c78764d4a85a8a0001e134dc6.png)
空间复杂度
描述算法运行过程中额外占用的内存大小,算法本身所占的空间不算在内。其实就是看函数内部有没有额外创建新的数组空间。同样,空间复杂度也用大O渐进复杂度表示。
常见方法的空间复杂度:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7865f7a831852b5383666c022fb8e052.png)
另外一种递归函数:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5069df00a79833e751081b7de61812e2.png)