最近学习了计算时间复杂度,发现没有之前想象的那也高深莫测,只要记住三条准则就可以了。
现总结如下:
1. 去掉运行时间中的所有加法常数。
2. 只保留最高阶项目。
3. 如果最高阶项目存在且不是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的三次方 次 } }
1. 算法运行次数n的平方+n的三次方
2. 只保留最高阶项目n的三次方。
3. 这里没有相乘的常数,所以第三步得到n的三次方。
最终时间复杂度是F(n)=O(n三次方)