社区
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*/
}
...全文
139
8
打赏
收藏
时间复杂度
请教各位,下面算法的时间复杂度是多少,我认为是O(log2n) 其中2为底 不知道对不对 i = s = 0; while ( s < n) { i ++; /* i = i +1*/ s += i; /* s = s + i*/ }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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语言版 (清华严蔚敏考研版) 全书知识梳理 正文: ...
算法的
时间复杂度
和空间复杂度-总结
算法的
时间复杂度
和空间复杂度 1、
时间复杂度
(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的...
十分钟搞定
时间复杂度
(算法的
时间复杂度
)
算法复杂度算法复杂度分为
时间复杂度
和空间复杂度。其作用:
时间复杂度
是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
时间复杂度
一个算法花费的时间与算法中语句的执行次数成正...
八种排序算法的
时间复杂度
复杂度
1、稳定性 归并排序、冒泡排序、插入排序。基数排序是稳定的 ...最基础的四个算法:冒泡、选择、插入、快排中,快排的
时间复杂度
最小O(n*log2n),其他都是O(n2) 排序法 平均时间 最差情形 稳定度 ...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章