社区
数据结构与算法
帖子详情
[菜问*2]到底什么时候才是O(logN)?递归算法的时间复杂度怎么计算?
qpalwosk
2005-12-12 04:31:20
如题,麻烦哪位大虾随口解释一下,一定让偶受益匪浅 非常very感激
...全文
844
5
打赏
收藏
[菜问*2]到底什么时候才是O(logN)?递归算法的时间复杂度怎么计算?
如题,麻烦哪位大虾随口解释一下,一定让偶受益匪浅 非常very感激
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greenhornet
2005-12-15
打赏
举报
回复
借lz地方问一下,递归方程该怎么解啊?
Kvci
2005-12-13
打赏
举报
回复
当计算某个结果时
某个循环体要执行的次数的表示函数就是其时间复杂度
比如一个数组中有N个元素,求和或者找最大元素要求最起码遍历每个元素一次
执行次数只与元素个数N有关,那其时间复杂度就是O(N),
大概可以看出,N越大,执行的次数就越多,时间就越长
执行总时间与N成正比
如果某个操作,比如我要把数组a中第i个 元素值赋给b
只要一句 b=a[i] 即可,而不用考虑N的个数为多大
因此这个操作的时间复杂度为O(1),
由于N可以任意值,我这个操作都只要一次
因此可以看成是与N无关
xdop
2005-12-13
打赏
举报
回复
统计
最深循环
内部
语句的执行频度
就得到时间复杂度的关于循环次数的最高次项
另外,时间复杂度和常量无关
比如
for(i=0;i<N;i++)
{}
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{}
时间复杂度T(N+N*M)
如果M为常量,则关于N的最高次项是1次,时间复杂度O(N)
如果M是变量,则时间复杂度需要进行多项式计算:
因为M可能在每轮循环中都不同
比如顺序表中折半查找时
M分别为N/2, N/4, N/8, ...
事实上,logN的多项式展开也是类似的形式
最终的频度统计公式中就出现了 logN 项,这就是来历
jp1984
2005-12-12
打赏
举报
回复
递归算法的分析就是根据递归算法执行步骤 ,找到递归关系 , 一般为一个递归方程形式
解这个递归方程就行了.
寻开心
2005-12-12
打赏
举报
回复
1 比如有序的序列当中查找一个数字,折半查找的情况下的平均查找次数就是 O(logN)
2 递归是要看具体的递归函数来分析的,最终得到的还是关于N的一个计算次数的函数
找几个例子看吧
递归算法
时间复杂度
分析
递归算法
时间复杂度
分析
时间复杂度
: 一般情况下,算法中基本操作重复的次数就是
问
题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用‘o’来表示数量级,给出算法
时间复杂度
。 T(n)=o(f(n)); 它表示随
问
题规模n的增大,算法的执行时间增长率和f(n)增长率成正比,这称作算法的渐进
时间复杂度
...
递归算法
的
时间复杂度
递归算法
的
时间复杂度
总结 本篇通过一道面试题,一个面试场景,来好好分析一下如何求
递归算法
的
时间复杂度
。 相信很多同学对
递归算法
的
时间复杂度
都很模糊,那么这篇来给大家通透的讲一讲。 同一道题目,同样使用
递归算法
,有的同学会写出了O(n)O(n)O(n)的代码,有的同学就写出了O(
log
n)O(
log
n)O(
log
n)的代码。 这是为什么呢? 如果对递归的
时间复杂度
理解的不够深入的话,就会这样! 那么我通过一道简单的面试题,模拟面试的场景,来带大家逐步分析
递归算法
的
时间复杂度
,最后找出最优解,来看看同样
递归算法
的
时间复杂度
怎么算
递归算法
的
时间复杂度
怎么
计算
计算
递归算法
时间复杂度
通用公式
最近看《算法导论》公开课视频,虽然本科没有学过此类课程,但也能感觉得出来教学水平高于母校,在此就吐槽这一句,进入正题。 第一二课讲到一种分析
递归算法
的
时间复杂度
的方法——递归树。长期处于学习技术阶段没有科研导致数学水平直线下降,为了看懂课程不得不捡回一点数学的基础知识。
递归算法
时间复杂度
的
计算
可以类比于高中时期数列的通项公式
计算
,虽然曾经基本看到什么类型的题目就知道套用什么公式,现在全忘了,说多
递归的
时间复杂度
分析
在第二种的递归中,有重复的
计算
,比如getxn_ByRecursion(x, n / 2) * getxn_ByRecursion(x, n / 2)中,前面与后面的值是一样的,所以只需要
计算
一次就行了,
计算
一次保存下来。此时,代码中只有一个递归引用的语句,且每次都是2/n,所以递归次数为
log
2n,且每次递归都是乘法
计算
,所以此时的
时间复杂度
为O(
log
n)。此时递归的次数还是为n,每次进行了一个乘法操作,操作数为1,所以
时间复杂度
还是为O(n)递归的
时间复杂度
为:递归的次数*每次递归的操作数。
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章