时间复杂度?for(i=1;i<n;i++); { for(j=1;j<i;j++) } 这样的解释?

for(i=1;i<n;i++);{for(j=1;j<i;j++)}这样的解释?... for(i=1;i<n;i++);
{
for(j=1;j<i;j++)
}
这样的解释?
展开
 我来答
牜疓囝
2012-12-28
知道答主
回答量:1
采纳率:0%
帮助的人:1553
展开全部
楼主的理解错了,第一个for是运行N次(其实是n-1次,不进入循环体本体是不计算次数的,不过没影
响),第二个也是1+2+3+4+...+n-2次(其实是0+1+2+...+n-2,不过也没有影响),可n*((n-2)*(n-
1)/2)的意思是什么呢?意思是(n-2)*(n-1)/2这个运算,做了n次?事实是这样的吗?不是的。(n-1)*
(n-2)/2这个是最内层循环体的本体运行的次数,而n-1次是外层循环体执行的次数,总复杂度是(n-1)*(n-2)/2+n-1这两部分组成的,由于前者大于后者,因此复杂度是(n-1)*(n-2)/2,最终是n^2。算复杂度其实主要看最里面那层运行多少次(其实可在i循环里加个"k++",j循环里面加个p++,k和p初始为0,运算输出可得k=n-1,p=(n-1)*(n-2)/2),还不明白可以再交流,444231011@qq.com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangjiandtc
2012-08-03 · 超过13用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:34.7万
展开全部
0 + 1 + 2 + 3 + 4 + 5 。。。。 + (n - 1)
=
n * n / 2

= n^2 / 2

一般近似为n^2
追问
第一个for运行了N次,第二个是不是运行了1+2+3+4+5+。。。。。+n-2次 ,n*((n-2)(n-1)/2),我的理解错在哪里?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liushiyanyan
2012-08-03 · TA获得超过108个赞
知道答主
回答量:101
采纳率:0%
帮助的人:72.7万
展开全部
(n-1)*(n-2) / 2
追问
为什么?
追答
第一层循环 n-1次
当i = 1 第二层循环没进去 0
当i = 2 1
当i = 3 2
....
当i = n-1 n-2

然后把0 + 1 + 2 + ....+ n-2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuchenyong119
2012-08-03 · TA获得超过265个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:170万
展开全部
你要问什么?这就是一个延时程序,还是个无规律的
更多追问追答
追问
第一个for运行了N次,第二个是不是运行了1+2+3+4+5+。。。。。+n-2次 ,n*((n-2)(n-1)/2),我的理解错在哪里?
追答
是呀,你的理解有点错,第一个for循环了n-1次,第二个是循环了1+2+。。。+n-2次。你要理解这的意义是什么,老师让你算的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式