社区
C语言
帖子详情
时间复杂度
arczee
2006-01-02 10:59:40
请教各位,下面算法的时间复杂度是多少,我认为是O(log2n) 其中2为底
不知道对不对
i = s = 0;
while ( s < n)
{
i ++; /* i = i +1*/
s += i; /* s = s + i*/
}
...全文
153
8
打赏
收藏
时间复杂度
请教各位,下面算法的时间复杂度是多少,我认为是O(log2n) 其中2为底 不知道对不对 i = s = 0; while ( s < n) { i ++; /* i = i +1*/ s += i; /* s = s + i*/ }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
murphykwu
2006-01-04
打赏
举报
回复
因为循环了n次
O(logn)
ox_thedarkness
2006-01-04
打赏
举报
回复
恩,纠正的纠正....偶最开始说的是对的, 然后说我说的是错的那贴是错的.... 正确答案仍然是 O(n开方),亦即 jp1984(compiler) 的答案。
orz。。。回贴后看到YufengShi(浪子) 的,头脑短路了。。。
作为对比,下面这个才是 log2n
s = 0;
i = 1;
while ( s < n)
{
i*=2; // i = 2^t
s += i; // s = 2 + 4 + 8 + ... + 2^t = 2^(t+1) - 2 ~ O( 2^t )
}
这个例子的s增长速度为 2^t (2的t次方),时间复杂度为 log2n ( n对2的对数)
你的例子的s增长速度为 t^2 (t的平方), 时间复杂度为 n~1/2 ( n的开方)
ox_thedarkness
2006-01-02
打赏
举报
回复
orz .... 失败...错了,是log2n
上面的全是废话...
ox_thedarkness
2006-01-02
打赏
举报
回复
s = 1 +2 + 3 +。。。+ i = i*(i-1)/2 ~ i^2
即, s增长的速度是 i的平方
所以结果是 O ( s^1/2 ) 或者说复杂度为 s开方.
比较 log2n 和 n开方, 对他们的比值求极限,有
lim( n^1/2 / log2n )
= ln2* lim( n^1/2 / ln n )
= ln2* lim( (1/2)*(n^ -1/2 ) / (1/n) )
= (ln2)/2 * lim( n^ 1/2 ) -> 无穷
即, n开方是log2n的高阶无穷大, 简而言之就是比log2n差
YufengShi
2006-01-02
打赏
举报
回复
2^k = n (k是循环次数)
k = log2 n
也就是说复杂度是O(log2n)
jp1984
2006-01-02
打赏
举报
回复
and the bound is tight too
jp1984
2006-01-02
打赏
举报
回复
assume the loop run x times .
then s = 1 + 2 + .. + x = x(1+x)/2<n
2n>x(x+1)>x*x
=> x < sqrt(2n)
the basic operation takes O(1) time ,hence the procedure takes O(sqrt(n)) time
yangman211
2006-01-02
打赏
举报
回复
In my opinion of young brother,
the time complex of this question is O(n^2).
一套图 搞懂“
时间复杂度
”
是我到目前为止所看到的关于
时间复杂度
介绍的最好的文章,简介 清晰 明了。 所以拿来po出来 仅供学习交流,如侵则删。 现已将此文收录至:《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理 正文: ...
各种排序算法的
时间复杂度
时间复杂度
当我们评价一个算法的时间性能时,主要标准就是算法的渐近
时间复杂度
,在算法分析时,经常是将渐近
时间复杂度
T(n)=O(f(n))简称为
时间复杂度
,其中的f(n)一般是算法中频度最大的语句频度。算法中语句的...
什么是
时间复杂度
与空间复杂度
目录算法效率
时间复杂度
概念大O的线性表示法
时间复杂度
举例空间复杂度空间复杂度的定义空间复杂度举例
时间复杂度
与空间复杂度是用来分析一个算法的效率的。 算法效率 算法效率分析分为两种:第一种是时间效率,第二...
算法的
时间复杂度
和空间复杂度计算
1、算法
时间复杂度
1.1算法
时间复杂度
的定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的
时间复杂度
,也就是算法的时间量度,记作...
计算
时间复杂度
--(简单版)
计算
时间复杂度
的3个出发点,掌握这三个出发点,那么一向搞不懂的
时间复杂度
就可以迎刃而解啦。 然后: 1、用常数1取代运行时间中的所有加法常数 2、在修改后的运行次数函数中,只保留最高阶项 3、如果最高阶项...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章