Big o 三角数的大O表示法?

Big o 三角数的大O表示法?,big-o,Big O,对于在时间内运行的算法,正确的大O表示法是什么?下面是一个例子: func(x): for i in 0..x for j in 0..i do_something(i, j) 我的第一直觉是O(n²),但我不能完全确定。是的,n*(n+1)/2,当你去掉常数和低阶项时,剩下的是n平方。是的,O(n^2)绝对正确。如果我没记错的话,O始终是一个上限,所以O(n^3)我也应该是正确的,就像O(n^n)或其他什么一样。然而,O(n^2)似乎是最紧密的一个,很容易推断。如果你

对于在时间内运行的算法,正确的大O表示法是什么?下面是一个例子:

func(x):
  for i in 0..x
    for j in 0..i
      do_something(i, j)

我的第一直觉是O(n²),但我不能完全确定。

是的,n*(n+1)/2,当你去掉常数和低阶项时,剩下的是n平方。

是的,
O(n^2)
绝对正确。如果我没记错的话,O始终是一个上限,所以
O(n^3)
我也应该是正确的,就像
O(n^n)
或其他什么一样。然而,
O(n^2)
似乎是最紧密的一个,很容易推断。

如果你从数学角度考虑,你正在计算的三角形的面积是
((n+1)^2)/2
。因此,这是计算时间:O((n+1)^2)/2)

此代码的计算时间增加了n*(n+1)/2的系数。这本质上是O(N^2)。

当输入从N增加到2N时 然后,算法的运行时间将从t增加到4t

因此,运行时间与输入大小的平方成正比

所以算法是O(n^2)

O(!n)处理阶乘计算(三角时间)的情况。

它也可以表示为O(n^2)对我来说这似乎有点误导,因为执行的数量总是O(n^2)执行量的一半。

你是对的。。。O((n+1)根据定义选择2)=O(n^2)。根据定义,
O(0.5*n^2)==O(n^2)
(事实上,这是一个适用于任何非零常数因子的等式),因此从严格的理论角度来看,这不会产生误导。:-)-1.A和A不一样。