算法-分治法演示课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 分治法 ;4.1 概 述 ; 将一个难以直接解决的大问题,划分成一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解。;分治法的求解过程:分-治-合 ;2. 独立子问题:各子问题之间相互独立。; 子问题1 的规模是n/2;例:计算an,应用分治技术得到如下计算方法:;4.1.2 数字旋转方阵;4.2 排序问题中的分治法;4.3.1 归并排序; r1 … … rn/2 rn/2+1 … … rn 划分 r‘1… …r’n/2 r’n/2+1… …r’n 递归处理 r1……rn/2rn/2+1 ……r n 合并解 ; 算法4.3——归并排序 void MergeSort(int r[ ], int s, int t) { int m, 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 (int i=s; i=t; i++) //将有序序列传回数组r中 r[i]=r1[i]; } } ; 二路归并排序的合并步的时间复杂性为O(n),所以,二路归并排序算法存在如下递推式:;算法4.4——合并有序子序列 void Merge(int r[ ], int r1[ ], int s, int m, int t) { i=s; j=m+1; k=s; while (i=m j=t) { if (r[i]=r[j]) r1[k++]=r[i++]; //取r[i]和r[j]中较小者放入r1[k] else r1[k++]=r[j++]; } if (i=m) while (i=m) //若第一个子序列没处理完,则进行收尾处理 r1[k++]=r[i++]; else while (j=t) //若第二个子序列没处理完,则进行收尾处理 r1[k++]=r[j++]; };4.3.2 快速排序 ;[ r1 … … ri-1 ] ri [ ri+1 … … rn ] 均≤ri 轴值 均≥ri 位于最终位置 ;以第一个记录作为轴值,对待排序序列进行划分的过程为: (1)初始化:取第一个记录作为基准,设置两个参数i,j;;;算法4.5——一次划分 int Partition(int r[ ], int first, int end) { i=first; j=end; //初始化 while (ij) { while (ij r[i]= r[j]) j--; //右侧扫描 if (ij) { r[i]←→r[j]; //将较小记录交换到前面 i++; } while (ij r[i]= r[j]) i++; //左侧扫描 if (ij) { r[j]←→r[i]; //将较大记录交换到后面 j--; } } retutn i; // i为轴值记录的最终位置 }; 以轴值

文档评论(0)

789 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳春市海霄网络科技有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA52HUKW1K

1亿VIP精品文档

相关文档