Big o 以下代码片段中的大O?

Big o 以下代码片段中的大O?,big-o,asymptotic-complexity,Big O,Asymptotic Complexity,请帮忙,我不确定在下面的例子中我对Big-O的推理是否正确。有人能在这里纠正一下思维上的错误吗。不确定在这些情况下,“i”递增变量如何影响用户输入的数据“n”。一般来说,我只是不确定我是否正确理解了big-O。 多谢各位 例1: for (i = 1; i < (n*n+3*n+17) / 4 ; i = i+1) // 1/4*(n^2+3n+17) since 1/4n^2 dominates it's O(n^2), curious how the i = i + 1 effects

请帮忙,我不确定在下面的例子中我对Big-O的推理是否正确。有人能在这里纠正一下思维上的错误吗。不确定在这些情况下,“i”递增变量如何影响用户输入的数据“n”。一般来说,我只是不确定我是否正确理解了big-O。 多谢各位

例1:

for (i = 1; i < (n*n+3*n+17) / 4 ; i = i+1) // 1/4*(n^2+3n+17) since 1/4n^2 dominates it's O(n^2), curious how the i = i + 1 effects things, please help 
System.out.println("Sunshine"); // negligible time O(1) 
// Total = O(n^2) + O(1) = O(n^2)
对于(i=1;i<(n*n+3*n+17)/4;i=i+1)//1/4*(n^2+3n+17)由于1/4n^2占主导地位,所以它是O(n^2),很好奇i=i+1是如何影响事情的,请帮助
System.out.println(“阳光”);//可忽略时间O(1)
//总数=O(n^2)+O(1)=O(n^2)
例2:

for (i = 0; i < n; i++) // O(n) here
if ( i % 2 == 0) // not sure here
for (j = 0; j < n; j++) // not sure
System.out.print("Bacon"); // negligible time O(1)
else
for (j = 0; j < n * n; j++) // not sure
System.out.println("Ocean"); // negligible time O(1)
// Total = ?
(i=0;i 例3:

 for (i = 1; i <= 10000 * n: i = i*2) // 1000*n so O(n) how does i = i * 2 effect things, please help
    x = x + 1; // negligible time O(1)
    // Total = O(n) + O(1) = O(n)
for(i=1;i示例5是O(1)

n^3=(((1)*n)*n)*n)
-需要:

  • 在n>1的情况下,i=1达到i=n^3的4个步骤
  • n=1时为1步
  • n<0时为0步
    • 示例5是O(1)

      n^3=(((1)*n)*n)*n)
      -需要:

      • 在n>1的情况下,i=1达到i=n^3的4个步骤
      • n=1时为1步
      • n<0时为0步

      第一个是O(n^2)乘以O(1)。尽管结果相同。对大多数示例的分析是错误的,尽管在某些情况下结果是正确的(5非常不正确)。提示:这是O(1))。第二个,外循环是
      O(n)
      。在这里面,由于if语句,有一半的时间是
      O(n)
      另一半时间是
      O(n^2)
      。外部*内部=
      O(n)*O(n^2)
      =
      O(n^3)
      @Michael这就是它的工作原理。我们计算每行的运行时间,然后将它们乘以最后的总运行时间?@EugeneSh。请进一步解释,我想了解我在分析中做错了什么。第一个是O(n^2)乘以O(1)。但结果相同。对大多数示例的分析是错误的,尽管在某些情况下结果是正确的(5是非常不正确的)。提示:这是O(1))。第二个,外循环是
      O(n)
      。在这里面,由于if语句,一半时间是
      O(n)
      ,另一半时间是
      O(n^2)
      .Outer*inner=
      O(n)*O(n^2)
      =
      O(n^3)
      @Michael就是这样工作的。我们计算每一行的运行时间,最后将它们乘以它们的总数?@EugeneSh。请进一步解释,我想了解我在这项分析中犯了什么错误。
      for ( i = 1; i <= n; i++) // O(n)
      for (j = 1; j <= n*3; j++) // n*3 so O(3n) but, since nested it's O(3n^2)
      System.out.println("Apple"); // negligible time O(1)
      // Total = O(n) + O(3n^2) = O(n^2)
      
      for (i = 1; i < n*n*n; i = i*n) // n*n*n = O(n^3) not sure how i = i * n effects things, please help.
          System.out.println("Banana"); // negligible time O(1)
      // Total = O(n^3) + O(1) = O(n^3)