什么是大O符号?

时间:2010-09-17 23:44:29

标签: computer-science big-o

  

可能重复:
  Plain English explanation of Big O

我知道Big O符号用于评估算法的效率,但我不明白你如何阅读Big O符号或算法究竟有多高效。有人可能会解释Big O符号的基础知识吗?感谢。

3 个答案:

答案 0 :(得分:4)

What is a plain English explanation of "Big O" notation?很好地解释了Big-O符号是什么以及如何使用它。

答案 1 :(得分:3)

This页面看起来很清楚地向我解释。

基本上,它是快速准确评估算法性能特征的便捷方式。无论在最坏的情况下还是平均情况下算法运行的速度有多快。它使用的最差或平均情况下有多少空间。有时更有用的是算法如何对许多项目执行,这称为摊销分析。

符号的基本特征是,当n变大时,它会省略与之无关的术语。例如,当n变大n^2 + 2n时,2n变得无关紧要。这将是O(n^2)

答案 2 :(得分:1)

Big O Notation描述了函数的限制行为。

对于计算机科学,通常使用它来显示算法在获得更大数据集时如何很好地扩展。例如,集合中的查找通常会有所不同,并根据集合类型使用Big-O表示法进行描述。 .NET Framework中的Dictionary<T,U>具有Item属性,其记录如下:

  

获取或设置此属性的值接近O(1)操作

基本上说,无论你添加多少项目,收集一个项目都将在不变的时间内完成。另一方面,List<T>描述其Contains method如下:

  

此方法执行线性搜索;因此,此方法是O(n)操作,其中n是Count。

这基本上说当你添加更多项目时,算法会在线性时间内变慢。如果您输入1000个项目,平均需要大约10倍作为包含100个项目的列表等。