k=0; for(i=1;i<=;i++){ for(j=i;j<=n;j++) k++ } k++ 为什么运行了n(n+1)/2 次阿

如题所述

两层循环嵌套,为了好理解,我标记成a,b
a:for(i=1;i<=n;i++)

{
b: for(j=i;j<=n;j++)

}
第一轮:a中的i=1,b为 for(j=1;j<=n;j++) b运行了1````n,所以是n次
第二轮:a中的i=2,b为 for(j=2;j<=n;j++) b运行了2````n,所以是n-1次
第三轮:a中的i=3,b为 for(j=3;j<=n;j++) b运行了3````n,所以是n-2次

。。。。
第n轮:a中的i=n,b为 for(j=n;j<=n;j++) b运行了n````n,所以是1次

所以总次数是,1+2+......n(次)= n(n+1)/2
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-27
看看有没有好答案。

k=0; for(i=1;i<=;i++){ for(j=i;j<=n;j++) k++ } k++ 为什么运行了n...
第n轮:a中的i=n,b为 for(j=n;j<=n;j++) b运行了n```n,所以是1次 所以总次数是,1+2+...n(次)= n(n+1)\/2

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

for(i=1;i<=n-1;i++) { k=i; for(j=i+1;j<=n;j++) if(a[j]>a[j+1...
最后,如果a数组里有n个数字的话,应该是从a[0]到a[n-1]。也就是说,从一开始就应该是for(i=0;i<n-1;i++),后面以此类推。

x=0; for(i=1; i<n; i++) for (j=1; j<=n-i; j++) x++;
1.一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)\/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。分析...

for(j=1;j<=n;j++) { for(i=1;i<m;i++) 数据结构, 求解释,怎么循环
当j=1的时候,进入第二个for循环,i=1,2,...,m-1;内部循环了m-1次之后,又回到第一个for循环,然后此时j=2,内部循环又是进行m-1次;依此类推,一直循环到j=n,内部循环m-1次;简单点说就是,j取一个值,内部循环就要进行循环m-1次,因为j有n个值,所以总的要循环n*(m-1)次 ...

FOR(I=1;I<N;I++) 为什么是N+1次?
c[i][j]=c[i][j]+a[i][k]*b[k][j]; --- (5)}(1.) for(i=0;i<n;i++) 频度为: n+1 (2.) for(j=0;j<n;j++) n(n+1)(3.) c[i][j]=0 n*n (4.) for(k=0;k<n;k++) n*n(n+1)(5.) c[i][j]=c[i][j]+a[i][k]*b[k][j] n*...

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=2;j<=i\/2;j++) { if(i%j==0) break; } i...
1.这个内嵌的for语句,当if(i%j!=0)的时候,那个j还做j++吗?答:会,for循环的最后一部分是在昨晚所有的循环体后都会执行的。顺便说一句,如果i%j==0了之后,j++反而不会执行了,因为break已经跳出了。2.会不会跳出循环呢?这是怎么的一个原理?答:此时跳出循环的语句不是break,而是j<=...

for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) d[i][j...
这像是最短路径算法啊 弗洛伊德 不是排序吧

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

相似回答