88问答网
所有问题
分析下列程序段的时间复杂度是______。 i=1: while(i<=n) i=i*2;
A.O(n)
B.O(n2)
C.O(log2n)
D.O(2*n)
举报该问题
推荐答案 2023-12-28
【答案】:C
循环体里面是i=i*2,即每循环一次i值增加一倍,所以执行次数与n之间是以2为底的对数关系,故时间复杂度为O(log2n)。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/gcSKS1cctc1KSSSaaV.html
相似回答
下面
程序段的时间复杂度
为___。
(n
>
1)
答:
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*...
写出
下列
算法
的时间复杂度:
i=1;
while(i
<
=n)
i=i*2;
答:
第k次对比
:i=2
^(k-
1
)..untile 2^(k-1)>n
;===
>k-1>logn ===>
时间复杂度
为log
(n)
...结构中题型求
时间复杂度
,
i=1;while(i
<
=n)i=i*2;
答:
8<n 是 16=
2(
4)...2(k-
1
)<n 是 = 2(k) 最后一次 则有2(k) <
= n
,取“=”,有 2(k) = n,得k = log(2)n 表示以2为底n的对数。去掉较低次方和最高次方的系数,得
时间复杂度
= log
(n)
i=1;
while(i
<
=n)
i=i*2
这个算法
的时间复杂度
怎么算
答:
算法
的时间复杂度
记做:T
(n)
=
0 (f (n) )。随着模块n的增大,算法执行的时间的增长率和f (n)的增长率成正比,所以f (n)越小,算法的时间复杂度越低,算法的效率越高。在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T (n)的同数量级。
i=1;
while (i
<
=n)
i=i*2
来问下这个这个循环的算法
复杂度是
多少哈?教...
答:
答案没错。i是这样变化的
:1
, 2, 4, 8, 16, ...如果用
i(
x)表示第x次循环时i的值,则 i(x) = 2^x , x初始值为0。循环在 i <= n 的时候停止,即
i(
x) = 2 ^ x <
= n;=
> x<= log
2(n)
即循环结束时,最多进行了log2(n)次运算。按照大O表示法定义,它
的复杂度
为 O...
...void f(int n) { int
i=1;
while (i
<
=n)
i=2*i;
}
答:
时间复杂度
,就是执行次数最多的那个语句次数。这
段程序
中,执行次数最多的就是
i=2*i;
其执行的次数为:2
*2*2*2
*...*2<
=n
假设为x次,则 2^x <=n 2^x =n 可以推出 x = log2n 所以,时间复杂度为 O(log2
n)
这里的2是log的下标。
i=1;
while (i
<
=n)
i=i*2
时间复杂度
答:
没错,n=4的时候,log2n=2。但是,你有没有注意到,
时间复杂度是
O(log
2n)
,不是log2n。你不能无视符号"O"。这个符号的意思是:时间复杂度不会比log2n大很多。通俗的说:就是时间复杂度或者和log2n在同一数量级,或者比log2n小。
...O(log{2}
n):
int
i = 1;
while(i
<
= n)
i = i * 2;
答:
因为从判断语句上看
i
从
1
循环到n,但是循环体中每次循环i都乘以2,所以实际上循环体只执行了log2n次(这是个简单的数学运算吧!),而判断时间复杂度一般都是看循环体的实际有效执行语句的次数,所以该循环
的时间复杂度是
O(log
2n)
。
大家正在搜
下列程序段的时间复杂度是
写出下列程序段的时间复杂度
下列程序的时间复杂度为
以下程序段的时间复杂度为
下面程序的时间复杂度是
程序片段的时间复杂度
以下程序时间复杂度
程序段时间复杂度
下列代码的时间复杂度