我们什么时候必须考虑运行时间的常数

时间:2016-10-12 21:11:49

标签: algorithm performance asymptotic-complexity

假设我有两个算法A()B(),这样算法A()完全取O(3n^2)而算法B()O(n^2)。虽然两种算法都以二次方式运行,但我们可以说算法B的运行速度比?

我知道在分析算法的运行时间时我们会忽略常量,但我想问一下在分析算法时我们需要考虑常数的情况。

谢谢

2 个答案:

答案 0 :(得分:2)

您可能需要查看this SO answer

从那个答案:

  

总之 - 由于大O只讨论增长率的相对类别,它忽略了常数因素。但是,这些常数绝对重要;它们与渐近分析无关。

所以它可能在Big O符号方面没有区别,但在现实生活中,你的算法B确实会运行得更快。

答案 1 :(得分:2)

你的两种算法具有相同的渐近复杂度,但其中一种可能比另一种更快。

在这种情况下,A具有更大的常量,因此它可能更慢,但可能还有其他因素在起作用(例如算法实现和运行的硬件中的实现细节)可能会以任何方式影响平衡。