三角数的大O表示法?

时间:2010-07-05 12:09:01

标签: big-o

triangular时运行的算法的正确大O表示法是什么?这是一个例子:

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

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

6 个答案:

答案 0 :(得分:15)

是,N *(N + 1)/ 2,当你删除常数和低阶项时,会得到N平方。

答案 1 :(得分:1)

是的,O(n^2)绝对是正确的。如果我没记错的话,O总是上限,所以O(n^3) IMO也应该是正确的,就像O(n^n)或其他什么一样。但是O(n^2)似乎是最容易被扣除的最紧张的。{/ p>

答案 2 :(得分:0)

如果以数学方式考虑,您计算的三角形区域为((n+1)^2)/2。因此,这是计算时间:O(((n + 1)^ 2)/ 2)

答案 3 :(得分:0)

对于该代码,计算时间增加因子N *(N + 1)/ 2。这基本上是O(N ^ 2)。

答案 4 :(得分:0)

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

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

所以算法是O(n ^ 2)

答案 5 :(得分:-2)

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

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