我更喜欢尽可能少的正式定义和简单的数学。
当前回答
1(一) :
这种复杂性与O(1)相同,除非它只是稍微糟糕一点,对于所有实用目的,你可以把它视为一个非常大的连续规模。
和(n):
O(n log n):
O(n2):
它作为一个平方,在那里 n 是平方侧的长度. 这是与“网络效应”相同的增长率,在那里网络中的每个人都可以知道网络中的每个人. 增长是昂贵的. 大多数可扩展的解决方案不能使用这个复杂度的算法,而不做显著的体操。
二(二) :
其他回答
大 O 是一种代表任何函数的顶部界限的手段,我们通常使用它来表达一个函数的顶部界限,说明一个算法的运行时间。
Ex : f(n) = 2(n^2) +3n 是代表假设算法的运行时间的函数,Big-O 评级基本上给了这个函数的上限,即 O(n^2)。
这个评级基本上告诉我们,对于任何输入“n”的运行时间不会超过Big-O评级所表达的值。
此外,同意上述所有详细答案,希望这有助于!!!
什么是“大O”笔记的明确英语解释?
我想强调“大O”评分的驱动动力是一件事,当算法的输入尺寸变得太大时,算法的某些部分(即恒数、比例、术语)的方程式描述算法的尺寸变得如此无意义,以至于我们忽略它们。
因此,如果输入尺寸不太大,那么“大O”评分(上限)的想法将毫无意义。
Lets say you want to quantify the performance of the following algorithm
int sumArray (int[] nums){
int sum=0; // here we've 1 operation
for(int i=0; i < nums.length;i++){ // we've n times
sum += nums[i]; // taking initialization and assignments, 3 ops
}
return sum;
}
在上面的算法中,让我们说你发现T(n)如下(时间复杂性):
T(n) = 3*n + 2
n= 1,000,000 -> T(1,000,000) = 3,000,002
n=1,000,000,000 -> T(1,000,000,000) = 3,000,000,002
n=10,000,000,000 -> T(10,000,000,000) = 30,000,000,002
将此类输入给另一个函数 F(n) = n
n= 1,000,000 -> F(1,000,000) = 1,000,000
n=1,000,000,000 -> F(1,000,000,000) = 1,000,000,000
n=10,000,000,000 -> F(10,000,000,000) = 10,000,000,000
因为你可以看到输入尺寸变得太大,T(n)大约相当于或接近F(n),所以连续2和比例3变得太不重要,现在大O“评级的想法来了,
O(T(n)) = F(n)
O(T(n)) = n
测量软件程序的速度非常困难,当我们尝试时,答案可以非常复杂,并且充满了例外和特殊案例,这是一个很大的问题,因为所有这些例外和特殊案例都令人沮丧和无助,当我们想比较两个不同的程序,以确定哪个是“最快”。
好事:
邪恶的:
和那可怕的:
大 O 评分是描述一个算法的空间或运行时间的上限的一种方式. n 是问题的元素数量(即序列的尺寸,树上的节点数量等) 我们有兴趣描述运行时间,因为 n 变得大。
要说二进制搜索有运行时间的O(登录)是说有某些恒定的c,你可以增加登录(n)通过它将总是比运行时间的二进制搜索。
换句话说,g(n)是你的算法的运行时间,我们说g(n) = O(f(n))当g(n) <=c*f(n)当n > k,当c和k是某些恒定的。
大 O 描述了一个功能的增长行为上限,例如一个程序的运行时间,当输入变得大。
例子:
O(n):如果我翻倍输入大小,运行时间将翻倍O(n2):如果输入大小将翻倍运行时间四倍O(log n):如果输入大小翻倍运行时间将增加一倍O(2n):如果输入大小增加一倍,运行时间将翻倍
输入尺寸通常是比特所需的空间来代表输入。
推荐文章
- 如何计算圆周长上的一点?
- 从整数流中找到运行中位数
- 在日历应用程序中建模重复事件的最佳方法是什么?
- 在任何情况下,您更喜欢高大o时间复杂度算法而不是低大o时间复杂度算法吗?
- 如何使用JavaScript比较软件版本号?数量(只)
- 在常数平摊时间O(1)中将一个对象追加到R中的列表?
- 跳跃表vs.二叉搜索树
- 如何使四舍五入百分比加起来为100%
- 是否有可能得到一个函数的所有参数作为单一对象内的函数?
- LL和LR解析之间的区别是什么?
- log(n!) = Θ(n·log(n))?
- C语言中位反转的高效算法(从MSB->LSB到LSB->MSB)
- 递归还是迭代?
- 什么是“P=NP?”,为什么这是一个如此著名的问题?
- 两个长度不等的表之间的排列