Big o 这个循环的O表示法是什么?

Big o 这个循环的O表示法是什么?,big-o,time-complexity,Big O,Time Complexity,我理解这是O(N^2): 但是这个呢 Loop from i=1 to N Loop from j=1 to i Do something with i,j 它仍然是O(N^2)还是O(N log N)?对于第二个问题,运行时间将是O(1/2n^2),之后将变成O(N^2),因为我们不关心O符号中的常数。通常,logn算法涉及在每次迭代中将子问题划分为实际大小的一半。以合并排序为例。在合并排序中,每次迭代都将数组的大小分成两半。对于第二个问题,运行时间将是O(1/2n^2),

我理解这是O(N^2):

但是这个呢

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

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

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

这也是
O(N^2)

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

这也是
O(N^2)

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

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

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

我们忽略大O符号中的常数

如果这些概念很难理解,试着用谷歌搜索一些教程和示例。你所需要的只是一些练习,你会得到的。

还有O(n^2)。 您必须考虑最坏的情况,即代码将运行多长时间。 所以第一个循环从1到N运行。 对于该循环的每个迭代,都有第二个循环,它从1运行到i

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

我们忽略大O符号中的常数


如果这些概念很难理解,试着用谷歌搜索一些教程和示例。你所需要的只是一些练习,你会得到的。

啊,这很有道理!啊,这是有道理的!
Loop from i=1 to N
   Loop from j=1 to i
      Do something with i,j
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).