数据结构中怎么计算时间复杂度

例1、for (i=0;i<n;i++) /1/
{y=y+1; /2/
for(j=0;j<=2*n;j++) /3/
x++;} /4/
/1/的频度是n+1, (为什么频度不是n次呢,n+1次是怎么算的啊)
/2/的频度是n
/3/的频度是n*(2n+2)
/4/的频度是你n(2n+1)
帮忙把每一段的频度是怎么算出来的解释一下,谢谢了

/1/ 为什么频度不是n次呢,n+1次是怎么算的啊
========================================
因为到n的时候,虽然已经不符合i<n了,但计算机要判断出这个仍需一次时间(当然判断出这个以后,后面的语句就不用执行了,所以/2/的频度是n),所以是n+1。
/2/ 前面/1/括号里已说明。从0到n-1,总共执行了(n-1)-0+1次。
/3/ 如果单独拿出这个内圈循环,频度为2*n-0+1+1。(注意是<=)再考虑外圈循环,相当于执行了n次的2*n-0+1+1,所以为n*(2*n+2)。
/4/ 同理1和2。内圈执行了2*n-0+1次,考虑外圈循环,则是n*(2*n+1)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-07
楼主,小弟不才,现在也在学习数据结构,但在算时间复杂度时实在没遇到过你这种问题,应该是题目答案错误了,这与我们一直做的相违背了。
相似回答