通过大哦表示法计算算法的时间复杂度

时间:2016-06-16 12:32:40

标签: algorithm time-complexity big-o

假设算法的时间复杂度为f(n) = O(g(n)) , if c1*g(n)<=f(n)<=c2*g(n) for all n>=n0 Constants c1 and c2 are positive real numbers n0 = non negative integer f(n),g(n) = non negative functions of non negative arguments 。 现在我知道了

g(n) = n^2

此处f(n) = n(n-1)并假设c1 = 0 and c2 = 1。我会0*(n^2) <= n(n-1) <= 1(n^2)

所以n>=1 n>=0

n = 0

也满足了条件

但我们通常没有 n>=0

那我该怎么写 n>=1 If (Target.Rows.Count > 1) Then Exit Sub

1 个答案:

答案 0 :(得分:1)

您应该阅读该声明的方式是:

如果在某个点f(n)之后,函数O(g(n))n0,则f(n)的所有值都保持在g(n)附近的相对区间内,在c1 * g之间( n)和c2 * g(n)。

只要存在n0,c1和c2,你就可以说任何关系。出于这个原因,n = 0并不重要。 n=1也没有。重要的是,在某种程度上条件成立之后。您可以n0 = 42显示条件成立,并得出结论f(n)= n(n-1)为O(n ^ 2)。

对于一些更复杂的函数f(n)对于低值会表现得很奇怪,因此忽略它们并选择更高的值可能是有意义的。只要你能找到一个这样的条件就可以保持它没关系,无论n0有多大。