时间复杂度 for(i=1;i<=n;i++) 这个语句为什么执行的是n次,不是n+1次啊,多重循环每个语句执行次数咋看

如题所述

第一个分号前的是初始条件,也就是说一开始设置i=1然后进入第二个分号判断,正确了就执行下面的语句,执行完下面的语句之后再执行第二个分号后的语句,如果第二个分号前的条件不符合,就不会执行下面的语句和第二个分号后的语句。第一次:i=1,下面执行一次,整个括号里的语句都被执行了一次;第二次:i=2,如果n〉=2则下面的语句和括号的语句都会被完整地执行一次,如果n=1,这个语句就不会被完整地执行。可见,当n=1时这个语句只执行了1次,同理,当n=2时这个语句只会被执行到第2次,第三次就不符合第二个分号前的条件了然后语句就不能被完整地执行,以此类推,这个语句只会被执行n次。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-07
从1 到 n 不是 0到N
还有时间复杂度 是不需要怎么准确的
比如 2*n^2 时间复杂度 表示成 n^2 就可以了 常数可以省略本回答被网友采纳
第2个回答  2018-04-11
i的初始值为1。
当中间的条件为<=时,执行次数为 n-i的初始值+1
当中间的条件为 <时,执行次数为 n-i的初始值

FOR(I=1;I<N;I++) 为什么是N+1次?
(2). 与(1)不同,当 i 在 0~(n-1) 范围内,内层循环[即是(2)的for循环]频度为 n ; 当 i = n 时,内层循环语句没执行。所以相当此时第(1)中 for 循环执行了n次,第二个for 循环执行了n+1次,即,频度共 n * (n+1);(3). 此句语句,是要利用(1)、(2)for...

for(i=1;i<=n;i++) for(j=i;j<=n;j++) s++; 分析语句段执行的时间复杂度...
。稍有夸张地说,如果一个语句i = 0,CPU需要的1,那么你需要的系统延迟10秒,在循环执行I = 0的10倍,你可以。你自然10秒,然后后面的代码执行。 CPU执行每个代码只是很短的时间耗费。找到这个程序,你可以观察到的延迟,总的周期数为ms * 110正如上面说的1 ms的周期耗时的,如果你想达到你的...

为什么for循环的时间复杂度是n+1呢
for(i=0;i<n;i++){ 循环体;} 从i=0开始判断执行循环,到i=n-1都满足循环条件,共执行n次循环体语句,时间复杂度为n;若改为 i<=n,则执行到 i=n 共执行n+1次循环体语句,时间复杂度为n+1;如果写成 for(i=0;i<n*n;i++){ 循环体;} 时间复杂度就变成n的平方了,也就是n*n...

for(i=1; i<=n;++i) {++x; s+=x;} 这个语句是什么意思,怎么个执行过 ...
for循环里面的语句表示,这个循环执行了n次,从i=1执行,每i=i+1执行一次,到i=n 大括号里面的表示,x=x+1;s=s+x 整体算式可以表示为:s=s+x+(x+1)+(x+2)+……+(x+n-1)+(x+n)

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

c语言里 for(i=1;i<=n;i++)和for(i=1;i<=n;++i)结果一样吗?
是一样的,因为他的条件是i<=n,则执行++i或i++,所以是一样,如果单独的++i,i++的结果是不一样的!

i=1;i<n;i++循环
循环次数你还要看初始值的。for(i=0; i<n; i++)就是循环n次(0,1,2,。。。n-1 共n次)for(i=1; i<=n; i++)也是循环n次 (1,2,3,。。。n 共n次)你在琢磨琢磨

for(i=1;i<=n;i++){i*=3}的时间复杂度是多少啊?
for(i=1;i<=n;i++){ i*=3;} \/\/这个循环要执行n次, i*=3也就是i=i*3;先说一下i=i*3的执行时间,他是执行了两次加法运算,其实也就是执行了常数时间,可以记为o(1);所以整个循环的时间复杂度是o(n)。

for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x++; 求时...
也就是∑(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^(循环...

下列程序段 for(i=1;i<=n;i++) A[i,j]=0;的时间复杂度是()
【答案】:答案:D 解析:题目中的程序段仅包含一个for循环,因此此程序段的时间复杂度取决于for循环的时间复杂度,for循环中循环变量i的初始值为1,循环条件是i<=n,每一次循环结束后i的值自增1,因此i的值变化的范围是:1~n,循环共执行n次,所以此程序段的时间复杂度为O(n)。

相似回答