我知道Big O符号用于评估算法的效率,但我不明白你如何阅读Big O符号或算法究竟有多高效。有人可能会解释Big O符号的基础知识吗?感谢。
答案 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个项目的列表等。