企业网站开发需求,ccd设计公司官网,wordpress 导入excel,wordpress如何制作单页订单1.斐波那契数列的时间复杂度问题 每一行分别是2^0---2^1---2^2-----2^3-------------------------------------------2^(n-2) 利用错位相减法#xff0c;可以得到结果是#xff0c;2^(n-1)-1,其实还是要减去右下角的灰色部分#xff0c;我们可以拿简单的数字进行举例子…1.斐波那契数列的时间复杂度问题 每一行分别是2^0---2^1---2^2-----2^3-------------------------------------------2^(n-2) 利用错位相减法可以得到结果是2^(n-1)-1,其实还是要减去右下角的灰色部分我们可以拿简单的数字进行举例子右下角会先变为21例如 5 4 3 3 2 2 1
2 1
这个例子就可以看出来左下角还有数据的时候右下角就已经可以得出结果了但是随着n的增加这个右下角的影响对整体越来越小所以我们可以忽略我们只需要关注计算次数的数量级所以斐波那契数列的复杂度就是2^n;
2.空间复杂度
算法运行占用的额外的空间的一种量度
系统自己开辟的空间不属于空间复杂度的范畴我们自己开辟的空间才属于空间复杂度
斐波那契数列的空间复杂度是O(N)递归开辟函数栈帧回调的时候函数栈帧继续利用以后才会销毁但是这个过程时间是累积的所以时间累加空间重复利用
所以时间是一去不复返的空间是可以重复利用的
3.函数栈帧的进一步理解 栈帧的销毁是归还使用权还给了操作系统并不是真正的销毁main函数开辟函数栈帧调用func1函数以后开辟新的栈帧使用完之后栈帧销毁func2开辟的还是func1的这块空间所以打印的地址一样归还栈帧以后其他的函数还是可以使用的
这个时候再来看看斐波那契数列他调用的过程是return fib(n-1)fib(n-2),他会先调用左边的n-1,,接着调用下一个n-1,他在调用完成以后回调剩下的n-2的时候和原来使用的栈帧地址是一样的这样就减少了空间复杂度,开辟的空间最后都会销毁空间复杂度计算的是占用空间最多时候的情况
4.轮转数组带你认识复杂度 1我们可以使用3次逆置的做法 这个做法的时间复杂度是O(N),空间复杂度是O(1);关键是对于节点处的数据下标的控制先让左边
逆置再让右边逆置最后整体进行倒序
2调用库函数memcpy
这个做法就是拿空间换时间需要多开辟数组空间这个里面的时间空间复杂度都是O(N);