分治法在合并排序算法中应用与实现.pdfVIP

分治法在合并排序算法中应用与实现.pdf

  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文档。上传文档
查看更多

对一个数组进行排序,可以将之分解为n个已经排序的子问题,然后进行合并就可以得到了

原问题的解。我们可以用分治法来解着这个问题。

通过对问题的分析,这个问题的解题方法符合分治法的条件:

l该问题的规模缩小到一定的程度就可以容易地解决;

l该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质

l利用该问题分解出的子问题的解可以合并为该问题的解;

l该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

2、根据问题分析,设计利用分治法解决问题的基本思路

分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问

题相互独立且与原问题相同。递归的解这些子问题,然后将个子问题的解合并得到原问题的

解。

3、算法设计

在这个问题中主要用到三个基本算法:

1、把大的问题分解成小的问题:MergeSort;

2、把两个较小的子问题合并成一个较大的问题:Merge;

3、对已排序数组进行拷贝:Copy;

具体算法(C++语言):

temteclassType

voidMergeSort(Typea[],intleft,intright)

{

if(leftright){//至少有2个元素

inti=(left+right)/2;//取中点

MergeSort(a,left,i);

MergeSort(a,i+1,right);

Merge(a,b,left,i,right);//合并到数组b

Copy(a,b,left,right);//回数组a

}

}

TemteclassType

voidMerge(Typec[],Typed[],intleft,intm,intright)

{

inti=1eft,

j=m+1;

k=1eft;

while((i=m)(j=right))

if(c[i]=c[j])d[k++]=c[i++];

elsed[k++]=c[j++];

while(j=right)

d[k++]=c[j++];

while(i=m)

d[k++]=c[i++];

对一个可以,可以用分治法来解说的。

通过对问题的分析,该问题的解法满足分治法的条件:

l将问题的规模缩小到一定程度,以便于解决;l问题可以分解为规模稍小的同一问题,

即问题具有最优异的结构特性。l将问题划分为各个相互独立的子问题,因此子问题不包

含公共子问题。

二、根据问题分析,技术分治法解决问题的基本思路

分治法安全性思是将一个大小为n的问题分解为k个更小的子问题,这些子问题相互独

立且与原问题相同。

3、算法设计

在这个问题中,主要用到的是三个基本算法

:1、把大手机技术变成小手机:MergeSort;2、把每

个子问题的时间拼成一个的:合并;3、对已

内容安全拷贝:;士界(C++语言):temte

classTypevoidMergeSort(Typea[],intleft,int

right){if(leftright){//至少有2个元素inti(left+

right)/2;//取中点MergeSort(a,left,i);合并排序(a,i+1,右);

合并(a,b,左,i,右);//时间b

Copy(a,b,left,right);//回a}}模板class

TypevoidMerge(Typec[],Typed[],intleft,int

m,intright){inti=1ef

文档评论(0)

四季豆 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档