3.以下算法是时间复杂度为( )。 void fun(int n){ int i=1; while(i<=n) i=i*2; } A.O(n) B.O(n2) C.O(nlog2n) D.O(log2n)为什么选D
时间: 2024-04-09 08:29:46 浏览: 119
关于算法时间复杂度的计算
选项 D.O(log2n) 是因为在每次循环中,变量 i 的值都会乘以 2,即 i = i * 2。假设 n 是输入的参数,初始时 i=1。在循环执行的过程中,i 的值会不断增加,直到它的值大于 n。因为每次乘以 2,i 的增长速度是指数级别的,所以时间复杂度是对数级别的。具体来说,循环的次数是 log2n(以 2 为底的 n 的对数),因此算法的时间复杂度是 O(log2n)。
阅读全文