分治算法找最大最小值和k值参照.pdfVIP

  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文档。上传文档
查看更多
实验报告 2010 – 2011 学年第 2 学期 任课老师: 课程名称 分治算法设计技术的应用 班级 座号 1.设计程序利用分治策略求 n 个数的最大值和最小值。 实验题目 实验时间 2 .利用分治策略, 在 n 个不同 元素中找出第 k 个最小元素。 实验目的、要求 实验目的:了解分治算法思想,并用分治算法实现函数调用 实验要求: 1.该实验的课内学时是 4 个课时。 2.题目 1 必须完成。 3.题目 1 在完成上述基本功能的前提下,有能力的同学可以完成题 目。 实验步骤与内容 实验主要思想 当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相 当复杂,使得直接求解法在时间上相当长, 或者根本无法直接求出。 对于这类问 题,我们往往先把它分解成几个子问题, 找到求出这几个子问题的解法后, 再找 到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大, 难以 解决,可以再把它们分成几个更小的子问题, 以此类推, 直至可以直接求出解为 止。这就是分治策略的基本思想。 把 n 个元素分成两组: A1={A[1],...,A[int(n/2)]} 和 A2={A[int(N/2)+1],...,A[N]} 分别求这两组的最大值和最小值, 然后分别将这两组的最大值和最小值相比 较,求出全部元素的最大值和最小值。 如果 A1 和 A2 中的元素多于两个, 则再用 上述方法各分为两个子集。直至子集中元素至多两个元素为止。 例如有下面一组元素: -13 ,13,9,-5 ,7,23,0,15。用分治策略比较的 过程如下: 1 图中每个方框中,左边是最小值,右边是最大值。从图中看出,用这种方法 一共比较了 10 次,比直接比较法的 14 次减少 4 次,即约减少了 1/3 。算法如下: 主要数据结构: void maxmin2(int A[],int i,int j,int *max,int *min) /*A 存放输入的数据, i ,j 存放数据的范围, 初值为 0,n-1 ,*max,int *min 存放最大和最小值 */ { int mid,max1,max2,min1,min2; if (j==i) { 最大和最小值为同一个数 ;return;} if (j-1==i) { 将两个数直接比较,求得最大会最小值; return ;} mid=(i+j)/2; 求 i~mid 之间的最大最小值分别为 max1,min1; 求 mid+1~j 之间的最大最小值分别为 max2,min2; 比较 max1和 max2,大的就是最大值 ; 比较 min1 和 min2,小的就是最小值 ; } 实验二主要算法 把 n 个元素放在顺序表中,然后取第 k 个元素作为标准 m,把 n 个元素重新 排列,分成两个区间:小于标准 m的元素区间 1~j ,大于标准 m的元素区间 j+1~n , 接下来有三种情况: 1)j=k ,则找到第 k 个元素。 2 )jk

文档评论(0)

高胖莹 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档