大O - 用于部分N的循环增量

时间:2013-06-23 10:07:10

标签: complexity-theory big-o

void function(int N){
  int c=0;
  for (int i =0; i< N; i+= N/5)
      c++;
}

以上的大O是什么?因为对于每N个循环将迭代5次,它是否是O(1)?

4 个答案:

答案 0 :(得分:1)

  

因为对于每N个循环将迭代5次,它是否是O(1)?

正。运行时间仅取决于常数 - 5 - 因此它受O(1)限制。

答案 1 :(得分:1)

假设例如N = 100。我们画一张桌子:

Iteration |   i
----------+------
    0     |  20
    1     |  40            
    2     |  60
    3     |  80
    4     |  100

请注意,选择N的值无关紧要,迭代次数最多为5次。 因此,我们得出结论,i 依赖于N

所以..你是对的,它是O(1)


澄清

上述示例和循环之间有什么区别:for(i=0;i<N;i+=20)

如果你画桌子,你会得到同一张桌子!但是,在这种情况下,结果执行取决于N的值。如果您选择N = 200,您将获得超过5个。因此,此案例的结果将是O(N)

答案 2 :(得分:0)

是的,结果不依赖于N.

答案 3 :(得分:0)

正式回答您的问题如下:

enter image description here