微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Big-O运行时间分析for循环

如何解决Big-O运行时间分析for循环

sum = 0;
for (i = 0; i < m; i++)
   for (j = 0; j < i*i; j++)
      for (k = 0; k < j; k++)
         sum++;

是(1 + 2 + ... +(((m-1)^ 2 -1)+(m-1)^ 2)=(m-1)^ 2 *((m-1)^ 2 + 1)/ 2 = O(m ^ 4)对吗?如果没有,您能帮我找到真正的解决方案并回答吗?

解决方法

这里有

sum(i=0..m,sum(j=0..i^2,sum(k=0..j,1))) =
= sum(i=0..m,j)) =
= sum(i=0..m,i^2*(i^2 - 1)/2) =
= sum(i=0..m,(i^4 - i^2)/2) =
= sum(i=0..m,(i^4 - i^2))/2

根据Wolfram AlphaO(m^5)

看起来您只计算了外循环的最后一次迭代的结果。

Here是Wolfram Alpha的精确计算,再次证明了O(m^5)的结果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。