算法性能说明例如:O(n)

可能重复:
Big O的纯英文解释

亲爱的大家,

在我读取关于某些算法的信息时,偶尔会遇到算法性能信息,例如:O(1),O(n),O(n ^ 2)等等。

我是否可以解释如何翻译和理解此性能数据? 什么样的O(n)变体可用,它们在实践中意味着什么?

谢谢。


你需要一个大O符号的解释。

它是一种算法复杂性的度量。 由于N趋于无穷大,所需时间的方向就是这样。

你需要注意的一件事是O(N)乘以一个常数仍然是O(N)。 没有像O(2N)那样的东西。

O(1)意味着某些事情需要一个固定的时间,即所花费的时间与您正在处理的数据量无关。

O(N)表示它与正在处理的数据量成正比,因此如果处理一百万条记录需要一分钟时间,则需要2分钟来处理200万条记录。

O(N ^ 2)表示它与N的平方成正比。1000记录需要一分钟,2000需要4分钟,4000需要16分钟等。

你也可以有O(log N)和O(N log N)。 您可以使用任何基础进行日志记录,但通常使用日志基数2进行度量。因此,一百万条记录将测量为20,因为2 ^ 20接近一百万,而200万条记录将是21.对于N日志N,一千条记录将相当于10,000,因为1000的日志约为10. 2000个记录将是22,000,因为2000的日志约为11。


从维基百科开始:http://en.wikipedia.org/wiki/Big-o_notation。

链接地址: http://www.djcxy.com/p/6761.html

上一篇: Algorithm Performance Explanation Ex: O(n)

下一篇: O notation? How do you come up with figures like O(n)?