减治法解决堆排序.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
减治法解决堆排序 减治法解决堆排序 教育文档欢迎下载 教育文档欢迎下载 减治法解决堆排序 减治法解决堆排序 教育文档欢迎下栽 教育文档欢迎下栽 算法分析实验报告 减治法-堆排序 学生姓名: 专 业: 班 级: 学 号: 指导教师: 2017年6月12日 目录 TOC \o 1-5 \h \z \o Current Document 一、 实验题目 2 \o Current Document 二、 实验目的 2 \o Current Document 三、 实验要求 2 四、 实现过程 3 1、 实验设计: 3 \o Current Document 2、 调试分析: 6 3、 运行结果:.….…错误!未定义书签。 \o Current Document 4、 实验总结: 7 \o Current Document 五、 参考文献 7 减治法解决堆排序 减治法解决堆排序 教育文档欢迎下栽 教育文档欢迎下栽 一、实验题目 减治法-堆排序 二、实验目的 1、 了解和掌握减治法的设计思想。 2、 了解各种经典问题的减治思想。 三、实验要求 L [问题描述]: 应用堆排序方法对一个记录序列进行升序排列。 2.[算法]: 减治法:减治法是把一个大问题划分为若干个子问题,但是这 些子问题不需要分别求解,只需求解其中的一个子问题,因而也无需 对子问题的解进行合并。 减治法将原问题分解为若干个子问题,并且原问题(规模 为n)的解与子问题(规模通常是n/2或n-1)的解之间存在某种 确定的关系,这种关系通常表现为: 1)原问题的解只存在于其中一个较小规模的子问题中: (2)原问题的解与其中一个较小规模的解之间存在某种对应关 系。 由于原问题的解与较小规模的子问题的解之间存在这种关 系,所以,只需求解其中一个较小规模的子问题就可以得到原问 题的解。 减治法只对一个子问题求解,并且不需要进行解的合并。应用减 治法(例如减半法)得到的算法通常具有如下递推式: T(n) = (0; n=l T(n/2)+l ; nl) 分治法需要对分解的子问题分别求解,再对子问题的解进行合 并,而减治法只对一个子问题进行求解,并且不需要进行解的合并。 所以,通常来说,应用减治法处理问题的效率是很高的,一般是O(logn) 数量级。 实现过程 1、实验设计: 1.堆排序是利用堆得特性进行排序的方法,其基本思想是:首先 将待排列的记录序列构造成一个堆,此时,堆顶记录是堆中所有记录 的最大者,将它从堆中移走,然后将剩余记录再调整成堆,这样又找 出了次大记录,依次类推,直到堆中只有一个记录为止。 减治法解决堆排序 减治法解决堆排序 教育文档欢迎下栽 教育文档欢迎下栽 减治法解决堆排序 减治法解决堆排序 教育文档欢迎下载 教育文档欢迎下载 2 .图解过程 47 35 26 20 18 7 13 10 3.算法实现 void SiftHeap(int r[],int k,int n) ( int ij,temp; i=k;j=2*i+l; while(jn) { if(jn-lr[j]r[j+l]) j++; if(r[i]r[j]) break; else ( temp=r[i]; r[i]=r[j]; r[j]=temp; i=j;j=2*i+l; } void HeapSort(int r[],int n) 减治法解决堆排序 减治法解决堆排序 教育文档欢迎下栽 教育文档欢迎下栽 int [temp; for(i=(n-l)/2;i=0;i-) SiftHeap(r,izn); for(i=l;i=n-l;i++) ( temp=r[O];r[O]=r[n-i];r[n-i]=temp; SiftHeap(r,O,n-i); } } 2、调试分析: 算法Sift将根结点与左右子树的根结点进行比较,若不满足堆的 条件,则将根结点与左右子树根结点的较大者进行交换,所以,每比 较一次,需要调整的完全二叉树的问题规模就减少一半,因此,其时 间性能是0(log2n)o 减治法解决堆排序 减治法解决堆排序 教育文档欢迎下载 教育文档欢迎下载 3、运行结果: 据 据 数 序 作 3 6 6 S 6 9 J1245736B - 7354¥ 354 ¥ 4、实验总结: 通过本次实验加深了我对减治法的理解,同时对用、减治法 解决一个实际问题有了一个更深层次的认识。通过本次实验使我掌握 了减治法递归的一般模式,以后在解决一类问题时可以照着这个模式 编写程序。 通过本次试验,自己基本上掌握上述算法原理,达到实验的目 的。 五、参考文献 [1]王红梅胡胡《算法设计与分析》(第2版),北京:清华大学岀 版社,2013年 ⑵王红梅等《数据结构(C++版)》(第2

文档评论(0)

文档查询,农业合作 + 关注
官方认证
内容提供者

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

认证主体土默特左旗农特农机经销部
IP属地内蒙古
统一社会信用代码/组织机构代码
92150121MA0R6LAH4P

1亿VIP精品文档

相关文档