[高分求助]计算各程序段的时间复杂度

(1)
for (i=0;i<n;i++)
for (j=i;j<n;j++) x++;
(2)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
x++;
(3)
for (i=1;i<n;i++)
for (j=1;j<n;j++) x++;
for (k=1;k<n;k++) x++;
(4)
for (i=1;i<n;i++)
{
j=i;
while (j<n) j*=2;
}
C语言的四个小题,请给出计算过程,谢谢!
想问下下面的大侠,n^2是什么意思?关键是我不懂这个符号“^”的意思,谢谢!

第1个回答  2008-09-06
根据循环嵌套的层数进行初步判断即可
1 n^2
2 n^3
3 n^2
4 n^2
第2个回答  2008-09-06
1, n的平方
2, n的3次方
3, n的平方+n
4, n(n+1)/2

n^2 就是n 的平方。。。
第3个回答  2008-09-06
(1) n*(n+1)/2
for (i=0;i<n;i++)
for (j=i;j<n;j++) x++;
//i=0执行n次(j=0~n-1)
//i=1执行n-1次(j=1~n-1)
......
总次数: n+(n-1)+(n-2)+...+1 也即 1+2+3+...+n =n(n+1)/2

(2) n*n*n
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
x++;
//k 循环执行 n 次, j 循环执行 n 次, i 循环执行 n 次
//所以总次数为 n次的n次的n次, 即 n*n*n , 也即 n^3

(3) (n-1)*(n-1)+(n-1)= (n-1)*n
for (i=1;i<n;i++)
for (j=1;j<n;j++) x++;
//j 循环执行 n-1 次(1~n-1) , i 循环执行 n-1 次;
//这里总次数为 (n-1)*(n-1)
for (k=1;k<n;k++) x++;
// 这里执行 (n-1)
总次数为 (n-1)*(n-1)+(n-1)=(n-1)*n

(4) (n-1)+(n-1)/2+(n-1)/4+(n-1)/8+...(/为整除)
for (i=1;i<n;i++)
{
j=i;
while (j<n) j*=2;
}本回答被提问者采纳

设n为整数,求下列各程序段的时间复杂度。
(1)循环从i=1到i=n-1,所以循环的次数是n-1,所以时间复杂度是O(n-1),即O(n)(2)循环从i=1,j=0到i=n\/2,j=n\/2,由于每次i和j只有一个变量增加,所以总的循环次数是n次.时间复杂度是O(n)(3)x=91到x=101,循环10次.然后y=100到99,x=91,然后x从91到101,循环10次,y从99到98....

求下列程序段的 时间复杂度,最好有解题过程
2.我们可以发现,每次进while,无论如何i+j会变大一,所以while语句会执行n次 时间复杂度 o(n)

分析下列程序段的时间复杂度是___。 i=1: while(i<=n) i=i*2;_百度...
【答案】:C 循环体里面是i=i*2,即每循环一次i值增加一倍,所以执行次数与n之间是以2为底的对数关系,故时间复杂度为O(log2n)。

以下程序段的时间复杂度是多少,为什么?
可以使用迭代法来求解。假设求n时复杂度为T(n)。可见算法的递归方程为: T(n) = T(n - 1) + O(1); \/\/这是因为求fact(n),需要先计算出fact(n-1) (复杂度为T(n-1)),再与n相乘(这部计算复杂度为O(1))迭代展开: T(n) = T(n - 1) + O(1)= T(n - 2) + O(1...

分析以下程序段的时间复杂度,请说明分析的理由或原因。
一、O(n) : n次循环内执行两条命令, 总计2*n忽略常数则O(n)二、O(n^2) : n次循环内, 第i次循环执行i条命令, 则时间复杂度为O(1+2+3..+n), 则为O(n*(n+1)\/2)忽略常数为O(n^2)三、O(n) : 在栈内从n递归到1需要递归n层, 每层执行一次乘法则为O(n)程序设计是给...

请分析图里程序段的时间复杂度,并写出分析过程?
内循环依次执行:2^t、2^(t-1)、2^(t-2)、...、2^1、2^0次,是等比数列,所以内循环共执行1*(1-2^(t+1))\/(1-2)等于2^(t+1)-1次,而2^t=n,所以共执行2n-1次,时间复杂度是O(n)。

分析下面程序段的时间复杂度
三层for循环,时间复杂度为O(n^3)

下面程序段的时间复杂度是 i=s=0; while(s<n) { i++; s+=i; }_百度...
s == 1 第二次s == 3 == 1+2 第三次s == 6 == 1+2+3 第四次s == 10 == 1+2+3+4 第k次 1+2+3+4+...+k == k*(k+1)\/2 那么当k*(k+1)\/2 >=n 的时候停止 也就是k == (根号(8*n+1) - 1 ) \/2 关于n的表达式是 根号的, 所以复杂度是 根号n 还有...

时间复杂度怎么算
一、代入法 大整数乘法计算时间的递归方程为:T(n) = 4T(n\/2) + O(n),其中T(1) = O(1),我们猜测一个解T(n) = O(n2 ),根据符号O的定义,对n>n0,有T(n) >问题九:如何计算算法的时间复杂度和空间复杂度 是说明一个程序根据其数据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*...

相似回答