- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例4:求和程序 float sum(float a[ ], const int n) { float s = 0.0; /* 1 */ for(int i= 0; i n; i++) { /* 2(n+1) */ s += a[i]; /* n */ } return s; /* 1 */ } 数字媒体技术教研室 乐小燕 * T(n)=3n+4 当n充分大时, T(n)与n是同阶的。 该算法时间复杂度为:T(n)=O(n) 例4:求和程序(递归) float rsum (float a[ ], const int n) { if (n = 0) { /* 1 */ return 0; /* 1 */ } else { return rsum (a,n-1)+a[n-1]; /* 1+ Trsum(n-1) */ } 数字媒体技术教研室 乐小燕 * s=0; /* 1 */ for (i=0; in; i ++) /* 2(n+1) */ for (j=0; jn; j ++) /* 2(n+1)*2n */ s+=B [i][j]; /* n2 */ sum=s; /* 1 */ 时间复杂度: ??? 思考练习 T(n)=O(5n2+6n+3)=O(n2) 如何估算 算法的时间复杂度? 方法1:计算所有语句执行次数; 方法2:计算原操作语句执行次数; 方法3:计算算法在最坏情况下的执行次数; 方法4:分别计算算法在最好、最坏情况下的执行 次数,再取平均。 最后用时间复杂度表示。 例4:两个NxN矩阵相乘 两个NxN矩阵相乘的算法中乘法运算是基本操作,其重复执行的次数为n3。 该算法的时间复杂度为: T(n) = O(n3)。for (i=1; i=n;++i) for(j=1;j=n;++j){ c[i,j]=0; for(k=1;k=n;++k) c[i,j] += a[i,k]*b[k,j]; }注意:由于算法的时间复杂度只是对于问题规模n的增长率,在难以精确计算语句频度的情况下,只需求出它关于n的增长率或阶即可。 考 平均时间复杂度 ---时间复杂度与输入数据有关时采用 采用平均时间复杂度或最坏时间复杂度(默认) 例如: 冒泡排序算法. Void bubble_sort(int a[], int n){ for (i=n-1,change = TRUE; i1change; --i) { change = false; for (j= 0; ji; ++j) if(a[j] a[j+1]){ a[j] ←→a[j+1]; change=TURE;} } }//bubble_sort 时间复杂度: O(n2) 考 通常涉及的增长率(阶)(从大到小) nn n!(阶乘阶) cn(c1), 2n , 3n(指数阶) nc(c1), n2, n3(方阶) nlog(n), nlog2(n)(对数阶) nr(0r1.0) log(n), log2(n) n(线性阶) 1(常量阶) O(1)O(log2n)O(n) nlog2(n)O(nc)nn 例:百钱买百鸡问题 100元钱买100只鸡,母鸡每只5元,公鸡每只3元,小鸡3只1元,问共可以买多少只母鸡、多少只公鸡、多少只小鸡? 解:设母鸡、公鸡、小鸡各为x, y, z只。则有: x + y + z = 100 5x + 3y + z/3 = 100 方法1: for(i=0;i=100;i++) for(j=0; j=100; j++) for(k=0; k=100;k++) { if(k%3 ==0i+j+k==100 5*I+3*j+k/3==100) printf(“%d,%d,%d\n”,
您可能关注的文档
最近下载
- 中考常考词汇英语2025 .pdf VIP
- 计算机组成原理(第六版,立体化教材)(白中英,戴志涛)课后习题答案.docx VIP
- 液化厂工艺讲座之脱碳系统.ppt VIP
- 人教一年级数学上册教案.docx VIP
- 人教一年级上册数学第一单元与复习教案.docx VIP
- 第6课 从隋唐盛世到五代十国 课件(共35张PPT) 2024-2025学年统编版高中历史(必修)中外历史纲要(上).pptx VIP
- 江西介绍PPT课件.pptx VIP
- 2025至2030年中国切割机器行业发展前景预测及投资战略咨询报告.docx
- 人工气道气囊的管理专家共识(2020完整版).pdf VIP
- 高考英语复习读后续写练习:麦当劳里的温暖善意+课件.pptx VIP
文档评论(0)