社区
C++ 语言
帖子详情
怎么样计算循环次数?还有时间复杂度?
井白人
2009-07-11 11:24:08
如简单的为例子:
int n=10,count=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
for(int k=1;k<=j;k++)
count++;
次数?时间复杂度?
那么更多的循环次数,时间复杂度呢?
有没有什么方法计算这么类问题~~
...全文
1581
29
打赏
收藏
怎么样计算循环次数?还有时间复杂度?
如简单的为例子: int n=10,count=0; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) for(int k=1;k<=j;k++) count++; 次数?时间复杂度? 那么更多的循环次数,时间复杂度呢? 有没有什么方法计算这么类问题~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dwl1992
2011-10-16
打赏
举报
回复
n(n+1)(2n+1)/6复杂度n*3
CJM_jyf
2011-07-12
打赏
举报
回复
很好啊
tufebin
2010-03-04
打赏
举报
回复
为什么都是O(n^3)?
我们老师讲过这个应该是O(n^4)吧
boy222
2009-12-31
打赏
举报
回复
好象有最好 最差 平均 三个次数
boy222
2009-12-31
打赏
举报
回复
数据结构只说了大概的阶的求法 但是具体的循环次数尤其是多层嵌套 根本不提
shunshine988
2009-07-18
打赏
举报
回复
up
takeiteasyli
2009-07-16
打赏
举报
回复
数据结构里面的东西。
chinaboywuhan
2009-07-14
打赏
举报
回复
int n=10,count=0; //O(1);
for(int i=1;i <=n;i++) //O(N^3); 参见一般法则3
for(int j=1;j <=i;j++) //O(N^2);
for(int k=1;k <=j;k++)//O(N)
count++; //O(1)
总的时间复杂度为O(N^3),参见法则1,2,4
法则1:T1(N) = O(f(n)), T2(N) = O(g(n)) T1(N) + T2(N) = max(O(f(n)), O(g(n))
T1(N)*T2(N)= O(f(n)*g(n))
法则2:如果T(N)是k次多项式,那么T(N) = O(N^k)
法则3:对于任意的常数k,(logN)^k = O(N)
法则4:常数项或低阶项不要放入O()中。*** 这一条一定要注意。算法分析不考虑低阶项和常数项***
一般法则:
1、for循环的运行时间是该循环内部语句*迭代次数,参见法则1.2, 4
2、对于顺序语句运行时间为各个语句运行时间求和,参见法则1.1, 4
3、对于多层循环,运行时间为内部语句的运行时间*该组所有for循环大小
4.对于if/else运行时间为二个语句块中运行时间长的语句块的运行时间 + 判断时间
5、如果一个算法用O(1)时间该一个问题的大小分解成原来的1/2,那么该算法是O(logN),如果只是把问题减少一个常数,那么这个算法是(N)
weiqiyiji
2009-07-14
打赏
举报
回复
int n=10,count=0; //O(1);
for(int i=1;i <=n;i++) //O(N);
for(int j=1;j <=i;j++) //O(N^2);
for(int k=1;k <=j;k++)
count++; //O(1)
这个我觉得有点小问题吧,我没记错的话,按照算法导论的来
应该是
int n=10,count=0; //O(1);
for(int i=1;i <=n;i++) //O(N + 1); for执行了N次,但是比较了n+1次
for(int j=1;j <=i;j++) //O(N^2 + 1);
for(int k=1;k <=j;k++)
count++; //O(1)
虽然最后还是O(N^2)不过计算有点不一样
enter333
2009-07-14
打赏
举报
回复
好东西,顶个。
chinaboywuhan
2009-07-14
打赏
举报
回复
看错了,总的运行时间是O(N^3),呵呵
chinaboywuhan
2009-07-14
打赏
举报
回复
int n=10,count=0; //O(1);
for(int i=1;i <=n;i++) //O(N);
for(int j=1;j <=i;j++) //O(N^2);
for(int k=1;k <=j;k++)
count++; //O(1)
总的时间复杂度为O(N^2),参见法则1,2,4
法则1:T1(N) = O(f(n)), T2(N) = O(g(n)) T1(N) + T2(N) = max(O(f(n)), O(g(n))
T1(N)*T2(N)= O(f(n)*g(n))
法则2:如果T(N)是k次多项式,那么T(N) = O(N^k)
法则3:对于任意的常数k,(logN)^k = O(N)
法则4:常数项或低阶项不要放入O()中。
一般法则:
1、for循环的运行时间是该循环内部语句*迭代次数,参见法则1.2, 4
2、对于顺序语句运行时间为各个语句运行时间求和,参见法则1.1, 4
3、对于多层循环,运行时间为内部语句的运行时间*该组所有for循环大小
4.对于if/else运行时间为二个语句块中运行时间长的语句块的运行时间 + 判断时间
5、如果一个算法用O(1)时间该一个问题的大小分解成原来的1/2,那么该算法是O(logN),如果只是把问题减少一个常数,那么这个算法是(N)
chinaboywuhan
2009-07-14
打赏
举报
回复
int n=10,count=0; //O(1);
for(int i=1;i <=n;i++) //O(N);
for(int j=1;j <=i;j++) //O(N^2);
for(int k=1;k <=j;k++)
count++; //O(1)
MatthewChen16
2009-07-13
打赏
举报
回复
看下数据结构
skyctr
2009-07-13
打赏
举报
回复
mark 学习了
Stilfler
2009-07-13
打赏
举报
回复
好久没上数据结构的课了呀。
井白人
2009-07-12
打赏
举报
回复
也许给我个计算原理更实际~不是吗/
井白人
2009-07-12
打赏
举报
回复
[Quote=引用 10 楼 Aeris 的回复:]
算法分析的确有方法,但没有什么一成不变的方法。要根据具体情况选用不同的方法。
像你的例子:
for(int i=1;i <=n;i++)
for(int j=1;j <=i;j++)
for(int k=1;k <=j;k++)
count++;
分析如下:
1.最内层循环体:count++; 我们认为,它的时间复杂度为1
2.分析最内层循环:很明显,在j给定的情况下,它需要执行
sum(1, k, 1, j) = j次
因为CSDN表示数学公式不方便,这里说明一下,上面的 su…
[/Quote]
谢谢~~
中才德创
2009-07-12
打赏
举报
回复
up
haitanshangdeyu
2009-07-12
打赏
举报
回复
大家分析的都好强……
我记得看一本什么书,上面写例题写的这种多重循环的。我看了之后感觉,其实只要把这个循环到最后要实现一个什么效果搞清楚就好求了。
比如说这个的话,要是我会这么求
最内层的语句执行一次复杂度为1,对它从K=1到K=j求和,得到j的表达式。然后再对求和所得,对j从j=1到j=i求和,得到带i的表达式,再对该式i从i=1到n求和,就可以求得只含有n的表达式了。
确实如楼上所说,不好弄公示,不然三个求和符号就可以说清楚的东西让我啰嗦了这么多……
加载更多回复(9)
分而治之-系统复杂度的解决之道
分而治之-系统复杂度的解决之道
算法
时间复杂度
+空间复杂度+
循环
重复创建变量复杂度
导航????⭐前言⭐复杂度
时间复杂度
概念的引出实战分析线性常数阶平方阶二分查找对数阶及证明递归线性指数爆炸空间复杂度概念的引出实战分析
循环
重复创建变量递归线性????结尾语???? ⭐前言⭐ 本文将要介绍数据结构的开篇–算法的复杂度,包括
时间复杂度
和空间复杂度。以及我们经常疑惑在
循环
重复创建变量空间复杂度的分析。 ????欢迎关注????点赞????收藏⭐️留言???? ????GithubJava仓库,欢迎点击访问???? ????博主的笔记链接,第一时间更新???? 复杂度 算法复杂度是指算法在编写
时间复杂度
计算
方法以及常见的
时间复杂度
数据结构,
时间复杂度
如何
计算
时间复杂度
?
关于
时间复杂度
算法的
时间复杂度
是用来描述一个算法的运行时间,
时间复杂度
通常 T(n) = O(f(n)) 来表示;我们用 n 来表示一个 问题的规模, T(n) 这个函数就表示算法的
时间复杂度
;O(f(n)) 表示的是算法的 向上渐近
时间复杂度
; 至于向下渐近
时间复杂度
Ω(ƒ(n)) 和平均渐进
时间复杂度
Θ(ƒ(n)) ,
时间复杂度
一般都是采用向上渐近表示。
计算
规则 1. 顺...
for
循环
三层嵌套
时间复杂度
计算
假设有这样一个for
循环
for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x++; 现在要求它的
时间复杂度
,看起来有点麻烦,但是只要我们把问题分解成若干个小问题一一解决,那么就容易多了。 首先,我们考虑这么一种情况,当i取值为a的时候,那么我们上面那个三层
循环
...
C++ 语言
64,266
社区成员
250,463
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章