我更喜欢尽可能少的正式定义和简单的数学。
当前回答
EDIT:快注,这几乎是令人困惑的Big O评分(这是一个上线)与Theta评分(这是一个上线和下线)。在我的经验中,这实际上是非学术设置讨论的典型。
在一个句子中:随着你的工作的规模上升,完成工作需要多长时间?
“大O”评分的一个重要方面是,它不会说哪个算法会更快到一个特定的尺寸。 采取一个字符串(字符串,整体值)对一系列对(字符串,整体值)。 是否更快地找到字符串中的关键或字符串中的元素,基于字符串? (即字符串, “找到字符串部分与特定的关键相匹配的第一个元素” ) 字符串是基因。
其他回答
告诉你从亚马逊订购哈利·波特:完整的8电影收藏(Blu-ray)并同时在线下载相同的电影收藏。你想测试哪种方法更快。
从实验中,我们知道在线购物的规模比在线下载更好,很重要的是要了解大O评级,因为它有助于分析算法的规模性和效率。
注意: 大 O 评级是算法最糟糕的场景,假设 O(1) 和 O(n) 是上面的例子最糟糕的场景。
参考: http://carlcheo.com/compsci
大 O 是一种代表任何函数的顶部界限的手段,我们通常使用它来表达一个函数的顶部界限,说明一个算法的运行时间。
Ex : f(n) = 2(n^2) +3n 是代表假设算法的运行时间的函数,Big-O 评级基本上给了这个函数的上限,即 O(n^2)。
这个评级基本上告诉我们,对于任何输入“n”的运行时间不会超过Big-O评级所表达的值。
此外,同意上述所有详细答案,希望这有助于!!!
大 O 是算法使用时间/空间的尺寸,与其输入的尺寸相比。
如果一个算法是O(n),那么时间/空间将与其输入相同的速度增加。
如果一个算法是O(n2)则时间/空间增加以其输入的速度为方形。
等等等。
我找到了一个非常好的解释关于大O评分,特别是对于一个没有太多的数学的人。
https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/
在计算机科学中使用Big O评分来描述算法的性能或复杂性。Big O具体描述了最糟糕的情况,并且可以用来描述一个算法所需的执行时间或使用的空间(例如在内存或磁盘上)。
当我们有一个函数,如f(n) = n+3 和我们想知道图表看起来如何喜欢,当n接近无限时,我们只是放下所有的连续和较低的顺序术语,因为它们不在乎什么时候n变得大。
常规和较低的命令时间的简单落下,正是找到下方和上方的功能的过程。
根据定义,一个函数是另一个函数的下层或上层界限,如果您可以找到一个恒定的函数,以便为每个 n 的输出比原始函数更大(或较小)。
f(n) = n*C > f(n) = n+3
而且是的 C = 2 会这样做,因此我们的函数 f(n) = n 可以是我们函数 f(x) = x + 3 的顶部界限。
相同的下限:
f(n) = n*C < f(n) = n+3
C = 2 會這樣做