在n元素数组排序处理中采用;
在X算法中:10 -8 n 2 sec,
在Y algoritm 10 -6 n log 2 n sec,
在Z algoritm 10 -5 sec。
我的问题是如何比较它们。例如,根据x,y的工作速度更快,我应该选择哪些元素?
答案 0 :(得分:7)
比较Big-Oh表示法时,忽略所有常量:
N ^ 2的增长率高于N * log(N),其增长速度仍快于O(1)[常数]。
N的力量决定了增长率。
示例:
O(n^3 + 2n + 10) > O(200n^2 + 1000n + 5000)
忽略常量(正如你应该对纯粹的大哦比较),这会减少到:
O(n^3 + n) > O(n^2 + n)
进一步减少忽略低阶条款产生:
O(n^3) > O(n^2)
因为N 3 > 2
的力量。
Big-Oh遵循这样的层次结构:
O(1) < O(log[n]) < O(n) < O(n*log[n]) < O(n^x) < O(x^n) < O(n!)
(其中x是大于1的任何数量,即使是最小的数量。)
你可以通过一些我不会在这里发布的规则来比较任何其他表达式,但是应该在维基百科中查找。我列出O(n*log[n])
,因为它在排序算法中很常见;有关具有不同基数或不同权力的对数的详细信息,请查看参考源(我是否提及维基百科?)
给wiki文章一个镜头:http://en.wikipedia.org/wiki/Big_O_notation
答案 1 :(得分:0)
我提出了这个不同的解决方案,因为还没有接受的答案。
如果你想看一个算法比另一个算法表现得更好的n
的值,你应该将algorthim时间设置为彼此相等并求解n
。
例如:
X = Z
10^-8 n^2 = 10^-5
n^2 = 10^3
n = sqrt(10^3)
let c = sqrt(10^3)
因此,在比较X
和Z
时,如果X
小于n
则选择c
,如果Z
则选择n
}大于c
。这可以在另外两对之间重复。