怎么计算时间复杂度
一般来说,时间复杂度是总运算次数表达式中受n的变化影响最大的那一项,并且不考虑系数
1.
对于以下这样的一个算法,可以分析下
for
(i=1;i<=n;++i)
{
for
(j=1;j<=n;++j)
{
c[i][j]=0;
//该步骤属于基本操作执行次数:n的平方次
for
(k=1;k<=n;++k)
c[i][j]+=a[i][k]*b[k][j];
//该步骤属于基本操作执行次数:n的三次方次
}
受影响最大的是最后一行代码,n^3,所以时间复杂度为O(n^3)
2.
对于此算法:
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
s++;
其中s++总共经过n+(n-1)+(n-2)+……+1+0=(n*(n-1))/2≈n^2/2 由于不需要考虑系数问题,所以其时间复杂度为O(n^2)
3.
再看下面的算法:
i=1;k=0;
while(i<=n-1){
k+=10*i;
i++; }
只循环n-1次,除掉系数-1可得时间复杂度为O(n)