分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __。

2024-12-24 18:09:32
推荐回答(4个)
回答1:

分析每一次循环可以发现,当循环执行10次后x>100,y方才减1,此时x被复原为91;
如此下去,由于每执行10次循环才使y减1,所以循环体执行100*10次,也就是说if语句判断执行了1000次(但里面的y--执行了100次)。至于时间复杂度,你现在数据都给定值了那不就是o(1)吗……如果x、y没给初值,则粗略地说应该为o(y)(或者说是o(10y))。

回答2:

一楼的回答是SB,希望那些没好好学算法的人就别在这里祸害学生。
时间复杂度很好算,实际上它是一个1+2+3.....+m=n的过程。等于n后循环终止。m好算吧?m=根号下(2n+1/4)-1/2.
所以时间复杂度是O(根号n).

回答3:

这段程序是错的。.
正确的应该是:
i=s=0;
while (sdo{
i++;
s+=i; //s=s+i
}
复杂度是n 只有一次循环 没有嵌套循环.

回答4:

s=1+2+3+.....+i=【(1+i)i/2】所以时间复杂度是o(√n)
根号不好打 反正就是根号下的n