您的位置:首页 > 其它

(新手上路)疑问:for循环如何计算时间复杂度

2018-03-08 12:06 309 查看
看到这样一段代码:
 for(int i=0;i<n;i++){   
      for(int j=i;j<n;i++){
         //复杂度为O(1)的算法
         ... 
      }
  }

这个算法的时间复杂度为什么是O(n^2)呢?
观察内循环
n+(n-1)+(n-2)+(n-3)+……+1 
=(n+1)+[(n-1)+2]+[(n-2)+3]+[(n-3)+4]+…… 
=(n+1)+(n+1)+(n+1)+(n+1)+…… 
=(n+1)n/2 
=n(n+1)/2 

=n²/2+n/2
我们可以得到内循环的时间复杂度为O(n²),为什么不再乘以外循环的n呢?关键:
如果内外循环之间的循环量之间没关系可将内外循环次数之积作为复杂度看待
若有关系则考虑内循环的基本操作的执行次数来分析复杂度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: