主题:求时间复杂度问题
红色猎杀
[专家分:0] 发布于 2006-07-07 16:27:00
[em10]for(j=0;j<=2*n;j++)
x++;
给出的两句频度分别是n*(2n+2)和n*(2n+1),我不清楚是怎么算出来的,请高手指点!
回复列表 (共5个回复)
沙发
euc [专家分:4310] 发布于 2006-07-07 16:48:00
???
板凳
skybtone [专家分:160] 发布于 2006-07-07 21:24:00
for(j=0;j<=2*n;j++)里j从0到2n,也就是2n+1次,但是你前面的那个n应该是还有个相应的语句,你一定是题目掉了前面一部分:)
3 楼
红色猎杀 [专家分:0] 发布于 2006-07-08 10:11:00
不好意思,这题的全题为
for(i=0;i<n;i++)
{
y=y+1;
for(j=0;j<=2*n;j++)
x++;
}
给出的后两句频度分别是n*(2n+2)和n*(2n+1),我不清楚是怎么算出来的,请高手指点
4 楼
skybtone [专家分:160] 发布于 2006-07-08 15:51:00
这里就很显然了,i是0到n-1,j是0到2n那么x++语句的频度就是n*(2n+1),y=y+1的频度就是n了,具体为什么,就是因为for语句的循环作用,我只能说到这了
5 楼
tlt [专家分:40] 发布于 2006-07-11 00:15:00
for(初始条件;供判断的条件;累加之类)
{语句;
}
for循环是先判断条件,再执行{}中的语句,不管条件是否符合,判断都是要先进行的
我来回复