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

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

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

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

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

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

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

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

扩展资料:

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

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

分析每一次循环可以发现,当循环执行10次后x>100,y方才减1,此时x被复原为91;

如此下去,由于每执行10次循环才使y减1,所以循环体执行10010次,也就是说if语句判断执行了1000次(但里面的y--执行了100次)。至于时间复杂度,你现在数据都给定值了那不就是O(1)吗……如果x、y没给初值,则粗略地说应该为O(y)(或者说是O(10y))。

以上就是关于下面程序段的时间复杂度为_____。(n>1)全部的内容,包括:下面程序段的时间复杂度为_____。(n>1)、下列程序段中带记号@的语句的频度及算法时间复杂度是多少!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9310535.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存