下面程序段的时间复杂度为_____。(n>1)

s=0;for(j=1;j<=n;j*=2)for(k=1;k<=n;++k).最好说的详细点,谢谢。... s=0;
for(j=1;j<=n;j*=2)
for(k=1;k<=n;++k).
最好说的详细点,谢谢。
展开
 我来答
仁昌爱娱乐
高粉答主

2019-12-04 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459768

向TA提问 私信TA
展开全部

i=1; while(i<=n) i=i*2的时间复杂度O(log2n)。

整段代码语句,中循环体只有一个while(i<=n),执行的次数是:

i = 1,i = 1*2=2,判断2是否小于等于n,是则继续循环,否则跳出循环。

i =2,i = 2*2=4,判断4是否小于等于n,是则继续循环,否则跳出循环。

i =4  ,i = 4*2=8,判断8是否小于等于n,是则继续循环,否则跳出循环。

根据规律发现,循环次数由log2n决定,所以复杂度是O(log2n)。

扩展资料:

一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。

但不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。

百度网友d42b18334
2012-04-19 · TA获得超过329个赞
知道答主
回答量:112
采纳率:0%
帮助的人:85万
展开全部
O(N^2)
因为子层k循环次数为N,时间复杂度为N
父层j循环次数为N,故时间复杂度为N
总体时间复杂度为AN*N+B*N+C=O(N*N)=O(N^2)
更多追问追答
追问
但是答案是O(nlog2n)呃?就是不会过程..
追答
额 吃夜宵。。。没看清楚哦。。抱歉
一样分析
因为子层k循环次数为N,时间复杂度为N
父层是j*=2;设 循环了T次即 2^T = n T=log2n
父*子= N*log2n
不懂继续追问。。哥吃扁肉。有空
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a399495
2012-04-20 · TA获得超过243个赞
知道答主
回答量:48
采纳率:100%
帮助的人:70.4万
展开全部
O(n*log(n))
外循环由于j是以2倍为速度指数级增长的,所以在O(log(n))的时间结束(没有内循环时)。
而每次外循环执行一次,都完整的执行了内循环。
内循环完整执行一次需要时间O(n)
所以综合起来便是每次外循环中内循环执行的时间乘以外循环所用的时间,即O(n*log(n))
追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式