假设我有两个算法A()
和B()
,这样算法A()
完全取O(3n^2)
而算法B()
取O(n^2)
。虽然两种算法都以二次方式运行,但我们可以说算法B的运行速度比?
我知道在分析算法的运行时间时我们会忽略常量,但我想问一下在分析算法时我们需要考虑常数的情况。
谢谢
答案 0 :(得分:2)
您可能需要查看this SO answer。
从那个答案:
总之 - 由于大O只讨论增长率的相对类别,它忽略了常数因素。但是,这些常数绝对重要;它们与渐近分析无关。
所以它可能在Big O符号方面没有区别,但在现实生活中,你的算法B确实会运行得更快。
答案 1 :(得分:2)
你的两种算法具有相同的渐近复杂度,但其中一种可能比另一种更快。
在这种情况下,A
具有更大的常量,因此它可能更慢,但可能还有其他因素在起作用(例如算法实现和运行的硬件中的实现细节)可能会以任何方式影响平衡。