FOR(I=1;I<N;I++) 为什么是N+1次?
1个回答
展开全部
在数据结构中,频度是指一个定义变量在它的函数中,并且是它在执行到该段语句为止时,这个定义变量在函数总共执行基本操作的次数。
例如下函数中各行频度n的计算:
for(i=0;i<n;i++) ----------------------------- (1)
for(j=0;j<n;j++) ------------------------- (2) { c[i][j]=0; ------------------------------ (3)
for(k=0;k<n;k++) ------------------- (4)
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*n*n } 解释:(1). i 变量在第一个 for 循环中,从取 i = 0 开始执行,直到i=n-1时为止,至此,i 执行了n次。但还没有完,i 还会再执行1次自加运算,故,频度共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循环语句的i ,j 对 c[i][j] 进行赋值,此时,i 得到的赋值只有从 0 到 n , j 得到的赋值也是从0到n ,都是 n次,此时(当 i 达到n-1 .\当 j 达到 n-1.)的 i++ \j++都不会执行。 故,频度共 n*n 次;
(4). 同上(1),(3)的理由,单独的(4)的for 循环执行了n+1 次,综上,频度为 n*n*(n+1);
例如下函数中各行频度n的计算:
for(i=0;i<n;i++) ----------------------------- (1)
for(j=0;j<n;j++) ------------------------- (2) { c[i][j]=0; ------------------------------ (3)
for(k=0;k<n;k++) ------------------- (4)
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*n*n } 解释:(1). i 变量在第一个 for 循环中,从取 i = 0 开始执行,直到i=n-1时为止,至此,i 执行了n次。但还没有完,i 还会再执行1次自加运算,故,频度共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循环语句的i ,j 对 c[i][j] 进行赋值,此时,i 得到的赋值只有从 0 到 n , j 得到的赋值也是从0到n ,都是 n次,此时(当 i 达到n-1 .\当 j 达到 n-1.)的 i++ \j++都不会执行。 故,频度共 n*n 次;
(4). 同上(1),(3)的理由,单独的(4)的for 循环执行了n+1 次,综上,频度为 n*n*(n+1);
富港检测技术(东莞)有限公司_
2024-08-05 广告
2024-08-05 广告
作为富港检测技术(东莞)有限公司的工作人员,关于ISTA 1A、2A及3A的区别及测试项目简述如下:ISTA 1A是非模拟集中性能试验,主要进行固定位移振动和冲击测试,针对不超过68kg的包装件。ISTA 2A则在此基础上增加了部分模拟性能...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询