【发布时间】:2018-10-05 22:47:14
【问题描述】:
这个函数(f1)的时间复杂度是多少?
我可以看到第一个循环(i=0)->(n/4 次)第二个(i=3)->(n/4 - 3 次)....等等,结果是:(n/3)*(n/4 + (n-3)/4 + (n-6)/4 + (n-9)/4 ....
我停在这里,如何继续?
int f1(int n){
int s=0;
for(int i=0; i<n; i+=3)
for (int j=n; j>i; j-=4)
s+=j+i;
return s;
}
【问题讨论】:
-
不是 O(n^2) 吗?如果 n 翻倍,则执行时间将翻两番。这类似于比较每个数组元素
for (i=0;i<n;++i) for (j=0;j<i;++j),所以我猜它是 O(n^2)。常量对于时间复杂度并不重要
标签: c loops time-complexity big-o complexity-theory