for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x++; 求时间复杂度

一道考试题目,没做出来问下解题思路

这个是O(n^3)的
实际上就是∑(i=1,n)∑(j=1,i)∑(k=1,j)1
也就是∑(i=1,n)∑(j=1,i)j
也就是∑(i=1,n)(i*(i+1)/2)
(∑(i=1,n)(i*i))/2+(∑(i=1,n)i)/2
前者有一个求和公式,可以得到结果是n*(n+1)*(2n+1)/12,展开后显然是三次的
后者可以忽略,次数低
复杂度O(n^3)
只要是这种形式的循环,复杂度全部都是O(n^(循环层数))追问

呃 有个地方没懂,算复杂度应该是最内层循环的次数吧,我是算到j层时应该是(1+n)*n/2次,n为3时j循环执行6次,但是到k层就实在算不清了,是这样算不对吗

温馨提示:内容为网友见解,仅供参考
无其他回答

...for(j=1;j<=i;j++) for(k=1;k<=j;k++) x++; 求时间复杂度_百度知 ...
实际上就是∑(i=1,n)∑(j=1,i)∑(k=1,j)1 也就是∑(i=1,n)∑(j=1,i)j 也就是∑(i=1,n)(i*(i+1)\/2)(∑(i=1,n)(i*i))\/2+(∑(i=1,n)i)\/2 前者有一个求和公式,可以得到结果是n*(n+1)*(2n+1)\/12,展开后显然是三次的 后者可以忽略,次数低 复杂度O(n^...

...<= n; j++) for(k = 1; k <= j; k++) x += delta;求时间复杂度_百度...
算法的复杂度是一层循环为 n 嵌套一层是 n*n 再嵌套一层是 n*n*n 所以就是n的三次方

x=0; for(i=1; i<n; i++) for (j=1; j<=n-i; j++) x++;
所以,T(n)=O(n(n-1)\/2)=O(n^2)

For(i=1;i<n;i++) For(j=1;j<i;j++) For(k=1;k<j;k++) X=x+1; 算出...
里面的表达式是1,因为内部只有x使用了1次 于是化简为两个希格玛的嵌套公式,外层是i从1到n-1,内层是j从1到i-1 里面的表达式是1+2+...+(j-1)=j*(j-1)\/2 继续往下化简就有点麻烦了,涉及到高中数学的特殊数列的求和,你先看看这些能懂不?

for(i=1;i<n;i++) for(j=1;j<=i;j++) x++
以循环体的执行次数的数量级的求解来实现,这是双重循环,且内循环次数不是常数,可以通过分别计算出在外层循环的每次执行时的内层循环的次数来实现,i=1内层1次 i=2内层2次 i=3内层3次 ...i=n-1内层n-1次 由此,最内层循环体共执行n(n-1)\/2次,所以时间复杂度为O(n^2)...

for(i=1;i<=n;i++) for(j=i;j<=n;j++) s++; 分析语句段执行的时间复杂度...
找到这个程序,你可以观察到的延迟,总的周期数为ms * 110正如上面说的1 ms的周期耗时的,如果你想达到你的延迟段长度的目的只能是决定传入的MS。毫秒更大的延迟就越长。3。有关的代码,这中for(j = 110; J - J> 0);运行正常,但部分没有任何意义。要么改变 为(J = 110; J - ;);...

k=0; for(i=1;i<=n;i++){ for(j=i;j<=n;j++) k++; } 求时间复杂度 怎么...
就是计算它运行的情况 两个循环 楼主可以试着找个n,自己看看它的运行过程(自己计算)、时间复杂度为n*n即n的平方

for(i=1;i<=n;i++){k++;for(j=1;j<=n;j++)x=x+k} 求时间复杂度?
f(n2)n2:n的平方

x=0; for(i=1;i<n;i++) for(j=1;j<n;j++) x++时间复杂度
O(n的平方) i从1到n循环n次, j从1到n循环n次所以他的时间复杂度取最高次就是O(n的平方)

for(i=1;i<=n;i++) for(j=1;j<=i;j++) s++;求时间复杂度
总运行次数为1 + 2 + ... + n = n(n+1)\/2 ,所以时间复杂度为O(n^2)

相似回答