Big o 以下代码片段中的大O?
请帮忙,我不确定在下面的例子中我对Big-O的推理是否正确。有人能在这里纠正一下思维上的错误吗。不确定在这些情况下,“i”递增变量如何影响用户输入的数据“n”。一般来说,我只是不确定我是否正确理解了big-O。 多谢各位 例1: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
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 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)