Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm O循环的表示法 for(int i=0;i_Algorithm_Performance_Notation - Fatal编程技术网

Algorithm O循环的表示法 for(int i=0;i

Algorithm O循环的表示法 for(int i=0;i,algorithm,performance,notation,Algorithm,Performance,Notation,这里的func是n*(n+1)/2,但是如果外部循环条件是i

这里的func是
n*(n+1)/2
,但是如果外部循环条件是
i
?我对相互关联的循环有问题。

您只需计算迭代的总数:

for(int i = 0; i < n; i++) {
   for(int j = 0; j < i; j++) { 
      O(1);
   }
}

正如你正确推断的那样。当您将
n
替换为
log(n)
时,只需在最后的公式中执行相同的操作,然后变成
log(n)*(log(n)+1)/2
,或者如果外部循环的条件更改为
iO((log(n))^2)
然后嵌套的两个循环构造的总体复杂性从O(n2)变为O(log(n)2)


您可以通过一个简单的替换
k=log(n)
来显示这一点,因为循环在
k
方面的复杂性是O(k2)。反转替换产生O(log(n)2)。

对于嵌套For循环(使用O表示法时,ofc),可以将所有循环的最坏情况相乘。如果第一个循环指向x,而一个嵌套循环指向i(i是最坏情况下的x),那么运行时复杂性为O(x^2)

如果用其他东西替换
n
,只需用相同的东西替换
n*(n+1)/2
中的每个
n
。这似乎归结为缺乏对基础代数的理解(或暂时的思维失误)。
1+2+3+…+n=n*(n+1)/2
,而不是
1+2+3+..+n-1
@AnthonyLabarre当然,这是一个非常愚蠢的错误。Tnx。
1 + 2 + 3 + .. + n - 1 = n * (n - 1) / 2