这个语句时间复杂度是多少?

weixin_40281816 2018-01-23 11:53:43
for(i=1;i<n;i++) i*=2;


这里即有++,又有*2, i变化很大,如何计算时间复杂度呢?
...全文
499 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2018-01-25
  • 打赏
  • 举报
回复
如果 N趋近于无穷大是, pow(2,i)+pow(w,i-1)+.... 和 pow(2*i) 需要求二者商的极限, 极限为1 ,可以认为时间复杂都相同.
zilaishuichina 2018-01-25
  • 打赏
  • 举报
回复
引用 10 楼 weixin_40281816 的回复:
[quote=引用 7 楼 zilaishuichina 的回复:] 计算一下你的i的变化就知道了 1 初始值 2 第一次i*=2之后 3 第一次i++之后 pow(2,2) - 1 6 第二次i*=2之后 7 第二次i++之后 pow(2,3) - 1 14 第三次i*=2之后 15 第三次i++之后 pow(2,4) - 1 30 第四次i*=2之后 31 第四次i++之后 pow(2,5) - 1 所以时间复杂度就是 log2(n)
这样算好像不大对, 第一次:i=1 第二次:i=2+1 第三次:i=pow(2,2)+pow(2,1)+1 第四次:i=pow(2,3)+pow(2,2)+pow(2,1)+1 ...... 第i+1次: pow(2,i)+pow(w,i-1)+..... 这次算下来,应该是:pow(2,i)+pow(w,i-1)+.....<n, 求i, 但这i怎么求呀?[/quote] 第一次:i=1 这是初始值 第二次:i=2+1 不就是pow(2,1) + 1么 , 不就是pow(2,2) - 1么 第三次:i=pow(2,2)+pow(2,1)+1 不就是pow(2,3) - 1么 第四次:i=pow(2,3)+pow(2,2)+pow(2,1)+1 不就是pow(2,4) - 1么 第i+1次: pow(2,i)+pow(2,i-1)+..... 不就是pow(2,i+1) - 1么 ......
真相重于对错 2018-01-25
  • 打赏
  • 举报
回复
上面算式有错误,但结果正确,懒得改了!
真相重于对错 2018-01-25
  • 打赏
  • 举报
回复
1 2*1=2+0 2 2*(2+1)=2*2+2; 3 2*(2*2+2)=2*2*2+4 4 2*(2*2*2+4)=2*2*2*2+8 5 2*(2*2*2+2+8)=2*2*2*2*2+16 .... N 2^N+2*(N-1) 最后 求 lim(( 2^N+2*(N-1)) / 2^N)=1 因此 时间复杂度 等于 O(lgN)
weixin_40281816 2018-01-24
  • 打赏
  • 举报
回复
引用 7 楼 zilaishuichina 的回复:
计算一下你的i的变化就知道了 1 初始值 2 第一次i*=2之后 3 第一次i++之后 pow(2,2) - 1 6 第二次i*=2之后 7 第二次i++之后 pow(2,3) - 1 14 第三次i*=2之后 15 第三次i++之后 pow(2,4) - 1 30 第四次i*=2之后 31 第四次i++之后 pow(2,5) - 1 所以时间复杂度就是 log2(n)
这样算好像不大对, 第一次:i=1 第二次:i=2+1 第三次:i=pow(2,2)+pow(2,1)+1 第四次:i=pow(2,3)+pow(2,2)+pow(2,1)+1 ...... 第i+1次: pow(2,i)+pow(w,i-1)+..... 这次算下来,应该是:pow(2,i)+pow(w,i-1)+.....<n, 求i, 但这i怎么求呀?
自信男孩 2018-01-23
  • 打赏
  • 举报
回复
时间复杂度和循环次数是相关的。计算一下循环次数就可以知道时间复杂度了
N_Sev7 2018-01-23
  • 打赏
  • 举报
回复
雪不化花不开 2018-01-23
  • 打赏
  • 举报
回复
O(logN)
百合杰 2018-01-23
  • 打赏
  • 举报
回复
O(log n)
zilaishuichina 2018-01-23
  • 打赏
  • 举报
回复
计算一下你的i的变化就知道了 1 初始值 2 第一次i*=2之后 3 第一次i++之后 pow(2,2) - 1 6 第二次i*=2之后 7 第二次i++之后 pow(2,3) - 1 14 第三次i*=2之后 15 第三次i++之后 pow(2,4) - 1 30 第四次i*=2之后 31 第四次i++之后 pow(2,5) - 1 所以时间复杂度就是 log2(n)
真相重于对错 2018-01-23
  • 打赏
  • 举报
回复
O(lgN)
destory27 2018-01-23
  • 打赏
  • 举报
回复


i*=2; n-1次 O(n)
destory27 2018-01-23
  • 打赏
  • 举报
回复


i*=2; n-1次 O(n)
destory27 2018-01-23
  • 打赏
  • 举报
回复


i*=2; n-1次 O(n)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧