前言
衡量算法的效率分为两种情况:
1.时间复杂度
2.空间复杂度
时间复杂度
含义:算法中的基本操作的执行次数,为算法的时间复杂度
大O的渐进表示法
计算时间复杂度时,只需要计算大概执行次数
求复杂度默认是最坏情况下的
推导大O阶方法
1、用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,只保留最高阶项。
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。
练习
4.
5.
- 递归的时间复杂度
公式: 递归的时间复杂度:递归的次数*每次递归后执行的次数
7.斐波那契递归
空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。
练习
只开辟了一个数组,那些常数不用另外开辟空间,都在数组内进行。
2.求第n个斐波那契数字
申请一个数组,把n个数字保存在数组里,每求完一个数字就返回给数组,所以要开辟n个空间。
3.阶乘递归Factorial的空间复杂度
每次递归都会在栈上开辟空间。递归几次就开辟多少块空间,比如求3,首先要调用3,然后返回2,1。