- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2025/2/4分治法第4章分治法4.1概述4.2排序问题中的分治法4.3组合问题中的分治法4.4几何问题中的分治法分治法是最著名的算法设计技术。1/56
2025/2/4分治法4.1概述4.1.1分治法的设计思想4.1.2数字旋转方阵2/56
2025/2/4分治法将一个难以直接解决的大问题,划分成一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解。4.1.1分治法的设计思想如果子问题的规模仍然不够小,可继续分解下去。3/56
2025/2/4分治法分治法的求解过程:分-治-合(1)划分:把规模为n的原问题划分为k个规模较小的子问题,并尽量使这k个子问题的规模大致相同。(2)求解子问题:各子问题的解法与原问题的解法通常是相同的,可以用递归的方法求解各个子问题。(3)合并:把各个子问题的解合并起来,分治算法的有效性很大程度上依赖于合并的实现。4/56
2025/2/4分治法2.独立子问题:各子问题之间相互独立。1.平衡子问题:最好使子问题的规模大致相同。启发式规则:5/56
2025/2/4分治法子问题1的规模是n/2子问题1的解子问题2的解子问题2的规模是n/2原问题的解原问题的规模是n分治法的典型情况6/56
2025/2/4分治法例:计算an,应用分治技术得到如下计算方法:3432328131319313193333分解问题求解每个子问题合并子问题的解不是所有的分治法都比简单的蛮力法更有效。分析时间性能??éù?íì′==1122naanaannn如果如果7/56
2025/2/4分治法4.1.2数字旋转方阵问题:输出N?N(1?N?10)数字旋转方阵。2019181716213231301522333629142334352813242526271278910116?6的旋转方阵8/56
2025/2/4分治法4.2排序问题中的分治法4.2.1归并排序4.2.2快速排序9
2025/2/4分治法4.3.1归并排序二路归并排序的分治策略是:(1)划分:将待排序序列r1,r2,…,rn划分为两个长度相等的子序列r1,…,rn/2和rn/2+1,…,rn;(2)求解子问题:分别对这两个子序列进行排序,得到两个有序子序列;(3)合并:将这两个有序子序列合并成一个有序序列。10/56
2025/2/4分治法r1……rn/2rn/2+1……rn划分r‘1……r’n/2r’n/2+1……r’n递归处理r1……rn/2rn/2+1……rn合并解举例:8326715411/56
2025/2/4分治法算法4.3——归并排序voidMergeSort(intr[],ints,intt){intm,r1[1000];if(s==t)return;else{m=(s+t)/2;Mergesort(r,s,m);//归并排序前半个子序列Mergesort(r,m+1,t);//归并排序后半个子序列Merge(r,r1,s,m,t);//合并两个已排序的子序列for(inti=s;i=t;i++)//将有序序列传回数组r中r[i]=r1[i];}}C++描述12/56
2025/2/4分治法二路归并排序的合并步的时间复杂性为O(n),所以,二路归并排序算法存在如下递推式:可得二路归并排序的时间代价是O(nlog2n)。二路归并排序在合并过程中需要与原始记录序列同样数量的存储空间,因此其空间复杂性为O(n)。?íì+==1)2(211)(nnnTnnT13/56
2025/2/4分治法算法4.4——合并有序子序列voidMerge(intr[],intr1[
文档评论(0)