大O表示计算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大O表示计算相关的知识,希望对你有一定的参考价值。

我不肯确定下面碎片代码的重要符号,给定的表达式是我想弄清楚的一部分。我知道给出两个简单的,默认的for循环导致O(n^2),但后者完全不同。以下是说明。

的算法

for (j = 0; j < n; j++)
{
  for (k = j; k < n; k++)
  {
  }
}

将导致表达式给出的多次迭代:

= n + (n-1) + (n-2) + (n-3) + ........ + (n - n)
  • 将上述系列表达式减少为代数表达式,无需求和。
  • 确定代数表达式后,表达Big O表示法中的表现。
答案

你可以使用这种方法(据说当他是一个小伙子时由高斯应用)。

如果你把所有数字加起来两次,你就得到了

     1   +   2   +   3   + ... +  n
+    n   + (n-1) + (n-2) + ... +  1
—————————————————————————————————————--
   (n+1) + (n+1) + (n+1) + ... + (n+1)   = n(n+1)

从而,

1 + 2 + 3 + ... + n = n(n+1)/2

n(n+1)/2(n^2)/2 + n/2,所以它在O(n^2)

以上是关于大O表示计算的主要内容,如果未能解决你的问题,请参考以下文章

分析下面的代码的时间复杂度,使用大O阶记法表示

大O表示法总结

如何将简单的计算机算法转换为数学函数以确定大 o 符号?

大O表示法的理解

大O符号初学者指南

算法介绍1-二分查找大O表示法