Big o 大O表示法:O(n^2)和O(n.log(n))之间的区别?

Big o 大O表示法:O(n^2)和O(n.log(n))之间的区别?,big-o,Big O,O(n^2)和O(n.log(n))之间的区别是什么?您需要更具体地说明您的要求,但是在这种情况下O(n log(n))更快n^2的复杂性增长更快 n log(n)增长明显较慢Big O计算相对于数据集大小的运行时间上限(n) O(n*log(n))算法并不总是比O(n^2)算法快,但考虑到最坏的情况,它可能是。一个O(n^2)-算法在复制工作集(最坏情况)时所花费的时间大约是原来的4倍,对于O(n*log(n))-算法来说,它的时间更短。数据集越大,使用O(n*log(n))-算法通常速度越快

O(n^2)
O(n.log(n))
之间的区别是什么?

您需要更具体地说明您的要求,但是在这种情况下
O(n log(n))
更快

n^2的复杂性增长更快

n log(n)
增长明显较慢

Big O计算相对于数据集大小的运行时间上限(
n

O(n*log(n))
算法并不总是比
O(n^2
)算法快,但考虑到最坏的情况,它可能是。一个
O(n^2)
-算法在复制工作集(最坏情况)时所花费的时间大约是原来的4倍,对于
O(n*log(n))
-算法来说,它的时间更短。数据集越大,使用
O(n*log(n))
-算法通常速度越快

编辑:多亏了“HAMS”,我在第一个回答中纠正了一个错误的陈述:我告诉过大家,在考虑最坏的情况时,
O(n^2)
总是比
O(n*log(n))
慢,这是错误的,因为两者都是常数因子之外的

示例:假设我们有最坏的情况,我们的数据集大小为100

  • O(n^2)
    -->100*100=10000
  • O(n*log(n))
    -->100*2=200(使用log_10)
问题是两者都可以乘以一个常数因子,比如我们将
c
乘以后者。结果将是:

  • O(n^2)
    -->100*100=10000
  • O(n*log(n))
    -->100*2*c=200*c(使用log\u 10)
所以对于
c>50
我们得到
O(n*log(n))>O(n^2),对于n=100

我必须更新我的声明:对于每个问题,在考虑最坏的情况时,
O(n*log(n))
算法将比
O(n^2)
算法对于任意大数据集更快

原因是:
c
的选择是任意的,但是是常量。如果您将数据集增加到足够大,它将主导
c
选择的每个常量的效果,并且在讨论两种算法时,这两种算法的
c
s都是常量

在O(nlog(n))时间内运行的算法通常比在O(n^2)时间内运行的算法更快

Big-O定义了性能的上限。随着数据集大小的增加(n)执行任务所需的时间长度。您可能会对。

表示法“Big Oh”给出了算法运行时间增长的估计上限。如果一个算法被假定为O(n^2),以一种简单的方式,它说对于n=1,它需要最大时间1个单位,对于n=2,它需要最大时间4个单位,以此类推。类似地,对于O(nlog(n)),它说生长的粒子将服从O(nlog(n))的上限。 (如果我在这里过于天真,请在评论中纠正我)


我希望这会有帮助。

从技术上讲,这取决于N的值……从技术上讲,不是。这取决于。。。他的问题意味着他想知道方程形成的曲线的差异。。。用数学术语来说,这个问题的意思是,在给定的n值下,差值是多少。Jrud,我认为从这个问题的措辞来看,很难支持你的解释。这个问题只是问O(n^2)和O(n logn)之间的区别是什么。@Jrud:O(n)的定义并不依赖于n。你从哪里得到这个图像的?这是一个很好的说明。蓝线是y=0.1x^2。我想弄清楚红线是什么,特别是对数的底是什么。它不应该是2号基地吗?一般意义是正确的,但大小可能会误导。从长远来看,对数基数应该是无关的。这并不能真正传达O(n^2)和O(nlogn)的不对称行为,因为如果绿色曲线正好是n^2,那么你可能会有另一个仍然是O(n^2)的函数,但看起来与红色曲线非常相似-1用于掩饰对Big-O理解的这一关键方面。该问题询问了NlogN和N^2之间的区别。不在N^2和(0.01*N^2)之间。。。哪个Big-O符号应该被“掩盖”。“O(n*log(n))并不总是比O(n^)快”,这是正确的。但遗憾的是,后续“但考虑到最坏的情况”是不正确的。你是否混淆了最坏情况分析和大O分析(也许最好的情况是大Omega)?这些不应该被混淆,事实上它们彼此无关。你是对的,因为它总是“除了一个常数因子”!我会更新我的答案。第一句话谢谢-1,第二句话谢谢+1。对于n.True的所有值,不保证所有O(n^2)函数都比所有O(nlogn)函数慢。我遗漏了这个关系假设一个足够大的值n。您还遗漏了O()是一个上限的事实。第二段开始:“Big-O定义性能上限”链接被中断。