我想弄清楚算法的确切的大O值。我将提供一个例子:算法的大O复杂度
for (int i = 0; i < n; i++) // 2N + 2
{
for (int x = i; x < n; x++) // N * 2N + 2 ?
{
sum += i; // N
}
} // Extra N?
所以,如果我打破一些的这个下来,INT I = 0会O(1)中,i < n为N + 1,I + +是N,乘内环由N:
2N + 2 + N(1 + N + 1 + N)= 2N^2 + 2N + 2N + 2 = 2N^2 + 4N + 2
添加的N为循环终止和总和常数,= 3N^2 + 5N + 2 ...
基本上,我不是100%确定如何计算确切 O表示法,我的猜测是O(3N^2 + 5N + 2)。
使用Big-O时,可以省略常量和所有非最高阶项。在这种情况下,O(3N^2 + 5N + 2)=> O(n^2)。这是因为随着n的增长,这些术语以n^2为主,变得非常微不足道。 – Clip
你的情况是'N'? “int i = 0将是O(1),”---呃,不。大O分析不是当你在一堆中加入不同的东西时。 – zerkms
逻辑上,'i