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

程序段“for(i=1; i<=n;) i=i*2;”的时间复杂度是多少

答案是:O(log2n )

i=1; ①
while (i<=n)
i=i*2; ②
解: 语句1的频度是1,
设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=log2n
取最大值f(n)= log2n,
T(n)=O(log2n ) -------------------------------------------*来源于百度*---------------------------------------
///////////////////////////////////////////////////////////////////////
修正下:O(log N),以免和常用对数混淆底是多少无关紧要,可以用换底公式换掉log2N = logxN / logx2logx2是个常数,可以被忽略
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-19
计算机程序说复杂度不会真的精确到微秒或者毫秒的,都是利用其中最频繁出现的一个语句作为度量,你的例子自然不用说。跟N值有关。N多少执行多少次,故N。
第2个回答  2013-12-19
O(log2N) 2是底数
第3个回答  2013-12-19
n

程序段“for(i=1; i<=n;) i=i*2;”的时间复杂度?
答案是:O(log2n )i=1; ① while (i<=n)i=i*2; ② 解: 语句1的频度是1,设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=log2n 取最大值f(n)= log2n,T(n)=O(log2n ) ---*来源于百度*--- \/\/\/

for(int i=1;i<=n;i=i*2)++x; 的时间复杂度
程序每执行一次,i就乘以2,但是i又是小于n的 所以2的a次方小于等于n 所以时间复杂度为log2(n)

for(i=1;i<=n;i=2*i)的时间复杂度
for(i=m;i>=1;i*=2);当m小于等于0时,只判断了一次便退出循环,时间复杂度为1;当m大于等于1时,时间复杂度为n,但是由于i永远大于等于1,这个循环是个死循环,n为无穷大。计算方法 1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T...

i=1; while(i<=n) i=i*2 这个算法的时间复杂度怎么算
一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f (n),因此,算法的时间复杂度记做:T (n) =0 (f (n) )。随着模块n的增大,算法执行的时间的增长率和f (n)的增长率成正比,所以f (n)越小,算法的时间复杂度越低,算法的效率越高。在计算时间复杂度的时候,先找出算法的基...

i=1; while (i<=n) i=i*2 时间复杂度
没错,n=4的时候,log2n=2。但是,你有没有注意到,时间复杂度是O(log2n),不是log2n。你不能无视符号"O"。这个符号的意思是:时间复杂度不会比log2n大很多。通俗的说:就是时间复杂度或者和log2n在同一数量级,或者比log2n小。

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<= log2(n)即循环结束时,最多进行了log2(n)次运算。按照大O表示法定义,它的复杂度为 O(log2(n)...

下面程序段的时间复杂度是 ? i=1; while(i<=n) i=i*2
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;
【答案】:C 循环体里面是i=i*2,即每循环一次i值增加一倍,所以执行次数与n之间是以2为底的对数关系,故时间复杂度为O(log2n)。

for(i=1;i<=n;i=i*2){x++;s=0;} 为什么T(n)=O(log2n)?
因为①语句在for (i=1;i<n;i++) 的循环体中,其循环次数为n-1,所以①的运行次数为n-1。而时间复杂度是取次数算式中的最高次幂的那一项,因此①的时间复杂度为O(n)

下面程序段的时间复杂度为___。(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*...

相似回答