大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表示计算的主要内容,如果未能解决你的问题,请参考以下文章