二分查找与斐波那契数递归与非递归的时间复杂度与空间复杂度
1、二分查找
- 非递归
非递归二分查找:
时间复杂度为O(logn)
空间复杂度为O(1)
-
递归实现
非递归二分查找:
时间复杂度为O(logn)
空间复杂度为O(1)
2、斐波那契数列
- 递归
时间复杂度为O(2^n)
空间复杂度为O(1)
- 非递归
时间复杂度为O(n)
空间复杂度为O(1)
总结
1、时间复杂度就是一个计算执行基本操作的次数的函数
一般算法O(n)计算方法:
<1>用时间1取代运行时间中的所有加法常数
<2>在修改后的运行次数函数中,只保留最高阶项
例如:2*n^3+n (只保留n^3,因为n^3的增长率远远大于n)
<3>如果最高阶项系数存在且不是1,则去除与这个项相乘的常数
(所以上式的2可以除去,时间复杂度为0(n^3) )
2、递归算法时间复杂度=递归总次数*每次递归次数
3、空间复杂度:函数中创建对象的个数关于问题规模函数表达式