如何使用步数查找时间复杂度

时间:2009-07-24 08:04:08

标签: complexity-theory big-o

sum(array,n)
{
  tsum=0;
  for(i=0;i<n;i++)
    tsum=tsum+array[i];
  return tsum;
}

3 个答案:

答案 0 :(得分:2)

在术语big-O中,它与处理的数组元素的数量成线性关系,因此O(n)

(注意,你的代码会覆盖i参数,假设参数是n,表示要求和的数组元素的数量?)

答案 1 :(得分:1)

您在1步中声明tsum = 0,然后运行n步的循环。在每次迭代中,你做一个1步的求和,然后你在1步中返回tsum。您的步数约为:

1 + 3n + 1,就大哦符号而言是O(n),忽略常数,以及所有低阶项(如果有一个常数)。有3n个步骤,如每次迭代,你递增变量i,检查它是否小于n,然后进入循环进行计算。

答案 2 :(得分:1)

                                Cost         Times
tsum=0;                         c1             1
for(i=0;i<n;i++)                c2             n+1
    tsum=tsum+array[i];         c3             n
return tsum;                    c4             1

算法总成本为1 * c1 +(n + 1) c2 + n c3 + 1 * c4

因此,该算法所需的时间与n成正比。