java 计算时间复杂度

1for(inti=0;i<n;i++)2for(intj=i;j<=n;j++)3for(intk=i;k<=j;k++)4sum++;5for(intp=0;p<n*... 1 for( int i = 0; i < n; i++ )
2 for( int j = i; j <= n; j++ )
3 for( int k = i; k <= j; k++ )
4 sum++;
5 for( int p = 0; p < n*n; p++ )
6 for( int q = 0; q < p; q++ )
7 sum—;

第四句 运行次数是
O( N3 )
那么 第七句的运行次数 是多少???

答案所给的是O( N4), 这个是怎么来的????
展开
 我来答
宋天一x340
2015-11-17 · TA获得超过122个赞
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:61.7万
展开全部
for(int p=0;p<n*n;p++)
    for(int q=0;q<p;q++)
        sum--;
下面我来简单解释一下为什么是O(n^4)
p的所有取值,以及相对性的sum运算的次数如下
p的取值:0  1  2  3  4  ...  (n^2 -1)
sum次数:0  0  1  2  3  ...  (n^2 -2)
从上面的式子我们知道sum--执行的次数也就是sum次数的累加和:
0+0+1+2+3+...+(n^-2)=1+2+3+ ... +(n^2 -2)这里我们可以用求和公式,但是需要搞定一个这里有多少项,很明显(n^2 -2)项,带入求和公式如下
=(1+(n^2 -2))*(n^2 -2)/2=(n^2 -1)(n^2 -2)/2=(n^4 -3*n^2 +2)/2
所以答案是O(n^4)
追问
(n^2 -1) 这个是什么意思?
追答
n的2次方
百度网友85cd0964c
推荐于2017-09-24 · TA获得超过385个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:248万
展开全部
你算最大值就可以了。前一半每个循环的最大index是n,所以是n*n*n。后一半的循环每个循环最大index是n*n,所以最后时间复杂度是(n*n)*(n*n)也就是N^4
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式