这个循环的O符号是什么?

时间:2013-11-22 00:12:50

标签: big-o time-complexity

据我所知,这是O(N ^ 2):

Loop from i=1 to N
   Loop from j=1 to N
      Do something with i,j

但是这个怎么样?

Loop from i=1 to N
   Loop from j=1 to i
      Do something with i,j

它仍然是O(N^2)还是O(N log N)?我真的不明白该怎么说。

3 个答案:

答案 0 :(得分:1)

这也是O(N^2)

N(N-1)/ 2~ O(N^2)

i = 1 than j = 1
i = 2 than j = 1 to 2
i = 3 than j = 1 to 3
i = 4 than j = 1 to 4
…….
…
i = N than j = 1 to N

So for total is 1 + 2 + 3 + 4 + …. + N = (N * (N+1))/2 ~ O(N^2).

答案 1 :(得分:0)

对于第二个问题,运行时间将为O (1/2 N^2),后来变为O(N^2),因为我们不关心O表示法中的常量。通常,log N算法涉及将子问题划分为每次迭代中实际大小的一半大小。以合并排序为例。在合并排序中,在每次迭代中,它将数组的大小分成一半。

答案 2 :(得分:0)

也是O(n ^ 2)。 您必须查看代码运行时间的最坏情况。 所以第一个循环从1到N. 对于该循环的每次迭代,都有第二个循环,它从1运行到i。

我们知道在最后一次迭代中我将是N,因此它将运行O(N * N),即(N ^ 2)

我们忽略big-O表示法中的常量。

如果这些概念很难,请尝试使用Google搜索一些教程和示例。你需要的只是一些练习,你会得到它。