程序段i=1;while(i<=n)i=i*2;的时间的复杂度是(?)

如题所述

你可以分析i,和循环次数之间的关系
i = 1, 2, 4, 8, 16 ...
所以假设循环次数是x。
那么i = 2^x
条件是i <= n
2^x <= n
所以x <= logn
所以x 从1 到logn,一共执行循环体logn次,所以复杂度是logn
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-30
假设循环次数是x。
i = 1, 2, 4, 8, 16 ,i = 2^x
条件是i <= n
2^x <= n
所以x <= log2n 一共执行循环体log2n次,所以复杂度是O(log2n)
相似回答