Big-O如果内部for循环以数字=>开头1

时间:2015-07-17 11:46:15

标签: big-o

我试图了解如果内部循环不是从0开始,而是1,2,3或更多,那么big-o符号是否会改变。

E.g。它会改变这个内部for循环从3开始的任何东西,还是大的o仍然是n平方?

for(int i = 0; i < n; i++)
    for(int j = 3; j < n; j++)

当我在它的时候,我不妨问一下,如果i或j在每次迭代中增加3,它是否会有所不同。 谢谢你的帮助!

3 个答案:

答案 0 :(得分:5)

如需大量解释,请参阅SQLite

关于您的具体问题:

案例1

for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j++)

有复杂性

  • o( n 2 ),因为您正在进行 n · n 操作
  • O( n 2

案例2

for(int i = 0; i < n; i++)
    for(int j = 3; j < n; j++)

有复杂性

  • o( n 2 - 3n)因为您正在执行 n ·( n - 3)操作
  • O(名词 2

案例3

for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j*=3)

有复杂性

  • o( n 2 / 3),因为您正在执行 n ·( n / 3)操作
  • O(名词 2

答案 1 :(得分:3)

这两个方面都没有改变时间复杂性。 Big-O符号仅关注增长的顺序,它不关心常量或因子的工作减少。

答案 2 :(得分:3)

它没有改变任何东西。所有这些测量都是行为趋势,Big-O是渐近上界。当样本大小为“任意大”时,单个迭代或偏移是没有意义的,&#34;这是你感兴趣的。

你真正想要的是增长最快的术语(你添加的东西),没有任何系数。因此,n ^ 5和(n-3)^ 5之间没有区别,因为后者增长最快的是...... n ^ 5.