比较Big O表示法

Clo*_*oak 0 algorithm big-o asymptotic-complexity

在n元素数组中进行排序处理;
在X算法中:10 -8 n 2秒,
在Y算法中10 -6 n log 2 n sec,
在Z algoritm 10 -5 sec.

我的问题是如何比较它们.例如,根据x,y的工作速度更快,我应该选择哪些元素?

Bla*_*ble 9

比较Big-Oh表示法时,忽略所有常量:

N ^ 2具有比N*log(N)更高的生长速率,其仍然比O(1)[常数]更快地生长.

N的力量决定了增长率.

例:

O(n^3 + 2n + 10) > O(200n^2 + 1000n + 5000)
Run Code Online (Sandbox Code Playgroud)

忽略常量(正如你应该为纯粹的大哦比较),这减少到:

O(n^3 + n) > O(n^2 + n)
Run Code Online (Sandbox Code Playgroud)

进一步减少忽略低阶条款产生:

O(n^3) > O(n^2)
Run Code Online (Sandbox Code Playgroud)

因为N的力量3 > 2.

Big-Oh遵循以下类似的层次结构:

O(1) < O(log[n]) < O(n) < O(n*log[n]) < O(n^x) < O(x^n) < O(n!)
Run Code Online (Sandbox Code Playgroud)

(其中x是大于1的任何数量,即使是最小的数量.)

你可以通过一些我不会在这里发布的规则来比较任何其他表达式,但是应该在维基百科中查找.我列出O(n*log[n])是因为它在排序算法中很常见; 有关不同基数或不同权力的对数的详细信息,请查看参考源(我是否提到过维基百科?)

给wiki文章一个镜头:http://en.wikipedia.org/wiki/Big_O_notation

  • 如果你曾经对微积分做过任何限制,那就是一个类似的概念. (3认同)
  • @harold:指数是一个数字不会使一个项不变,即`N ^ 3`不是常数,而`5 ^ 45`是并且将被忽略. (2认同)