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

[复制链接]
查看11 | 回复3 | 2019-12-4 16:12:01 | 显示全部楼层 |阅读模式
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)。扩展资料:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但不可能...
回复

使用道具 举报

千问 | 2019-12-4 16:12:01 | 显示全部楼层
O(N^2)因为子层k循环次数为N,时间复杂度为N父层j循环次数为N,故时间复杂度为N总体时间复杂度为AN*N+B*N+C=O(N*N)=O(N^2)...
回复

使用道具 举报

千问 | 2019-12-4 16:12:01 | 显示全部楼层
O(n*log(n))外循环由于j是以2倍为速度指数级增长的,所以在O(log(n))的时间结束(没有内循环时)。而每次外循环执行一次,都完整的执行了内循环。内循环完整执行一次需要时间O(n)所以综合起来便是每次外循环中内循环执行的时间乘以外循环所用的时间,即O(n*log(n))...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行