根据循环层数判断时间复杂度,这样合理吗?
yysx 2014-09-30 10:56:55 按循环层次来判断的话:
下面的例子
for(i=1,i<=n; ++i)
for(j=1; j<=n; ++j)
{ c[i][j]=0 ;
for(k=1; k<=n; ++k)
c[i][j]+=a[i][k]*b[k][j] ;
}
时间复杂度为O(n3)
for(i=1; i<=n; ++i)
for(j=1; j<=n; ++j)
{ ++x; s+=x ; }
其时间复杂度为:O(n2)
但下面的例子就不同了
i=0;s=0;
while(s<n){
i++;
s=s+i;
}
虽然是一层循环,但它的时间复杂度却是O(√n) n的开方。
这是为什么呢?如果不能按循环层次来看,又有什么比较方便的方法吗?