大哦算法复杂度的表示法

时间:2013-02-26 05:33:23

标签: algorithm complexity-theory big-o

如果N * C *(logN + N)表示算法1的计算时间步长而N * C *(logN + N * C)表示算法2的计算时间步长,那么说两者都有正确O(N ^ 2)的计算复杂度

*其中C是常数值

4 个答案:

答案 0 :(得分:1)

是的,这是我的逻辑:

O(Cn(log n + Cn)) 

删除常量

= O(n(log n + n)) 

拆分乘法

= O(n * log n + n^2)

删除较小的术语

= O(n^2)

如果C“非常大”并不重要,我们只关心Big-O表示法中的n,因为它是不断增长的术语。当n变得足够大(例如接近无穷大)时,C将变得毫无意义。在实践中C可能会产生巨大影响,但这在Big-O中被抽象出来。

答案 1 :(得分:1)

是的,这是正确的,因为f \ element O(g)( Landau -Notation)意味着您的算法 f 增长慢于 g 。由于你的算法增长速度都慢于n ^ 2,你的假设是正确的。

常数 - 让我描绘一下:)

说明复杂性是 O(n ^ 2)意味着您可以从nlog(n)到n ^ 2看到的整个平面。这就是你忽略常数的地方。所以你的算法a可以比算法b好得多,但仍然保持相同的Landau复杂度,因为它只给出了一个上限。

enter image description here

答案 2 :(得分:0)

是的,将步数乘以常数对复杂的Big-Oh符号没有影响。

此外,当N变大时,N 2 项在N log(N)上占主导地位,这就是Big-Oh表示法的目的。

答案 3 :(得分:-1)

要记住的一件事...... c值起着重要作用。

假设算法在数组上运行大约32次。

因此算法的复杂性为32 * n = C * n = O(n)

让我们尝试在30的数组大小上运行算法。因此它的32 * 30.这是n ^ 2次操作。

我们通常为大集合计算大O分析。真的很大。所以它有意义

来到你的问题。

只要你的常数C具有可比性,它们都在O(n ^ 2)中运行。所以这取决于算法