我更喜欢尽可能少的正式定义和简单的数学。
当前回答
我找到了一个非常好的解释关于大O评分,特别是对于一个没有太多的数学的人。
https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/
在计算机科学中使用Big O评分来描述算法的性能或复杂性。Big 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”中,意思是“命令”(或准确地说“命令”),所以你可以从字面上得到它的想法,它是用来命令一些东西来比较它们。
“大O”做两件事:估计你的计算机适用于完成一个任务的方法的步骤多少。 方便这个过程与其他人进行比较,以确定它是否好? “大O”通过标准化评分实现上述两件事。 有七个最常用的评分O(1),这意味着你的计算机得到一个任务完成1步,这是很好的, 订单 No.1 O(logN), 平均值
此分類上一篇
请注意订单在线结束,只是为了更好地理解。有超过7个评分,如果所有可能性考虑。
概述“大O”描述算法的性能,并评估它;或者正式处理它,“大O”分类算法并标准化比较过程。
大 O 描述了一个功能的增长行为上限,例如一个程序的运行时间,当输入变得大。
例子:
O(n):如果我翻倍输入大小,运行时间将翻倍O(n2):如果输入大小将翻倍运行时间四倍O(log n):如果输入大小翻倍运行时间将增加一倍O(2n):如果输入大小增加一倍,运行时间将翻倍
输入尺寸通常是比特所需的空间来代表输入。
定义 : 大 O 评级是指如果数据输入增加,算法性能将如何表现的评级。
当我们谈论算法时,有3个重要柱子 算法输入、输出和处理 大 O 是象征性的评分,如果数据输入增加到什么速度,算法处理的性能将有所不同。
例如,请参见下面的函数“函数1”,该函数收集并在第一个记录中进行处理,现在该函数的性能将是相同的,无论您放置1000、10万或100000记录。
void Function1(List<string> data)
{
string str = data[0];
}
void Function2(List<string> data)
{
foreach(string str in data)
{
if (str == "shiv")
{
return;
}
}
}
因此,通过查看Big O评级,我们分类算法的好和坏区域。
此分類上一篇
https://www.youtube.com/watch?v=k6kxtzICG_g
它切断到骨头,只提供关于算法的规模性质的信息,具体如何使用资源(思考时间或记忆)的算法规模,以回应“输入大小”。
考虑蒸汽发动机和火箭之间的差异. 它们不仅仅是相同的东西的不同品种(如说,一个Prius发动机与一个Lamborghini发动机),但它们是显著不同的类型的驱动系统,在它们的核心。