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)。
扩展资料:
一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。
但不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。
但是答案是O(nlog2n)呃?就是不会过程..
追答额 吃夜宵。。。没看清楚哦。。抱歉
一样分析
因为子层k循环次数为N,时间复杂度为N
父层是j*=2;设 循环了T次即 2^T = n T=log2n
父*子= N*log2n
不懂继续追问。。哥吃扁肉。有空
噢噢,懂了
哈哈,谢谢,能加你Q吗.有不懂得可以问问你吗?
妹子在这边透露QQ不好吧。。。加百度空间好友就好了
追问好的
本回答被提问者采纳我还有一道题的问题http://zhidao.baidu.com/question/413202906.html?oldq=1