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


当前回答

大O只是一种方式来“表达”自己,以一种常见的方式,“运行我的代码需要多少时间/空间?”

因此,你可能明白“n2”是什么意思,但要更具体,玩你的想法,你有一个简单的,最简单的分类算法;泡沫分类。

我的名单

比较 1 和 6 是最大的? Ok 6 是正确的位置,前进! 比较 6 和 3, oh, 3 是更少的! 让我们移动, Ok 列表改变了,我们需要从现在开始!

為每個項目,你再看所有項目一次,為比較,這也是“n”,所以為每個項目,你看“n”時刻意味著n*n = n2

我希望这就像你想要的那样简单。

其他回答

要做一个字面类似,你不关心跑者能跑到100米,甚至跑到5K的速度,你更关心马拉松人,最好是超级马拉松人(除此之外,跑的类似性会崩溃,你必须转向“长跑”的形象意义)。

关于所有这些数学逻辑和多元化是什么? 显然算法与这些数学术语内在相关。 如果你测量区块上的所有孩子的高度,它会花费你那么多时间,因为有孩子。 这是内在相关的 n^1 或只是 n 的概念,在那里 n 是区块上的孩子数量。

我希望我已经解释说,大O的评级仅仅是关于长期,数学与计算方式有内在的联系,数学术语和其他简化与长期有相当常见的联系。

f(x) = k(x)g(x) k 与 a(如果 a = +∞,这意味着有 N 和 M 等数,以至于每个 x > N 的, < M 等数。

sin x = O(x) when x → 0. sin x = O(1) when x → +∞, x2 + x = O(x) when x → 0, x2 + x = O(x2) when x → +∞, ln(x) = o(x) = O(x) when x → +∞。

更多例子


从(源)可以读到:

大 O 评级根据其增长率定义函数:具有相同增长率的不同函数可以使用相同的 O 评级进行代表。

在计算机科学时间复杂性和空间复杂性理论中,人们可以认为大O评级是对时间和空间的某种最糟糕情况的算法的分类。

一个算法被称为采取线性时间/空间,或者O(n)时间/空间,如果其时间/空间复杂性是O(n)。

和 O(n log n) 如:

一个算法被称为在量子时间/空间中运行,如果T(n) = O(n log^k n)为某种积极的连续 k;线性时间/空间是 k = 1(来源)的情况。

此分類上一篇

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 描述了一个功能的增长行为上限,例如一个程序的运行时间,当输入变得大。

例子:

O(n):如果我翻倍输入大小,运行时间将翻倍O(n2):如果输入大小将翻倍运行时间四倍O(log n):如果输入大小翻倍运行时间将增加一倍O(2n):如果输入大小增加一倍,运行时间将翻倍

输入尺寸通常是比特所需的空间来代表输入。