我更喜欢尽可能少的正式定义和简单的数学。


当前回答

O(n2):被称为四方复杂性

1 件: 1 件 10 件: 100 件 100 件: 10,000 件

请注意,物品的数量增加了10个因素,但时间增加了102个因素。

O(n):被称为线性复杂性

1 件: 1 操作 10 件: 10 操作 100 件: 100 操作

这一次,元素的数量增加了10个因素,所以时间n=10,所以O(n)的规模因素是10。

O(1):被称为恒久复杂性

1 件: 1 操作 10 件: 2 操作 100 件: 3 操作 1000 件: 4 操作 10,000 件: 5 操作

他们降低了数学,所以它可能不是准确的n2或他们说它是什么,但这将是规模的支配因素。

其他回答

O(n2):被称为四方复杂性

1 件: 1 件 10 件: 100 件 100 件: 10,000 件

请注意,物品的数量增加了10个因素,但时间增加了102个因素。

O(n):被称为线性复杂性

1 件: 1 操作 10 件: 10 操作 100 件: 100 操作

这一次,元素的数量增加了10个因素,所以时间n=10,所以O(n)的规模因素是10。

O(1):被称为恒久复杂性

1 件: 1 操作 10 件: 2 操作 100 件: 3 操作 1000 件: 4 操作 10,000 件: 5 操作

他们降低了数学,所以它可能不是准确的n2或他们说它是什么,但这将是规模的支配因素。

大 O 评级是描述算法将运行多快的方式,因为有意数量的输入参数,我们将称之为“n”。在计算机科学中是有用的,因为不同的机器以不同的速度运行,简单地说算法需要 5 秒,不会告诉你很多,因为虽然你可能运行一个系统与 4.5 GHz 八核处理器,我可能运行一个系统。

如果你有一个合适的概念的无限在你的头脑,那么有一个非常简短的描述:

大 O 评级告诉你解决一个无限大的问题的成本。

此外,

常见因素不可忽视

如果你升级到一个可以运行你的算法的计算机两倍的速度,大 O 评级不会注意到这一点. 持续的因素改进太小,甚至在大 O 评级工作的规模中也会注意到。

然而,任何“大”比恒定的因素都可以被检测到。


如果上面的没有意义,那么你头脑中没有相容的直观的无限观念,你可能应该忽略上面的所有观念;我唯一知道如何使这些观念严格,或者解释它们是否已经是直观的有用,就是先教你大O评分或类似的东西。

上述说法是一个很好的开始,但不是完全真实的。

更准确的解释(数学)

n = 输入参数数

T(n) = 表达算法运行时间的实际函数为 n 的函数

c = 常态

f(n)= 表达算法运行时间为 n 的函数的约定函数

接下来,在大O方面,接近f(n)被认为足够好,只要下面的条件是真实的。

lim     T(n) ≤ c×f(n)
n→∞

方程式是如 n 接近无限, T 的 n 是少于或等于 c 次 f 的 n。

T(n)∈O(n)

回到英语

基于上面的数学定义,如果你说你的算法是一个大O的n,这意味着它是一个函数的n(输入参数的数量)或更快。

Big O of n 意味着我的算法运行至少如此之快. 你不能看你的算法的 Big O 评分,并说它很慢. 你只能说它很快。

大 O 是算法使用时间/空间的尺寸,与其输入的尺寸相比。

如果一个算法是O(n),那么时间/空间将与其输入相同的速度增加。

如果一个算法是O(n2)则时间/空间增加以其输入的速度为方形。

等等等。