网站大量收购独家精品文档,联系QQ:2885784924

堆排序实验报告(共10篇).doc

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
堆排序实验报告(共10篇)

堆排序实验报告(共10篇) 堆排序实验报告 堆排序实验 一.需求和规格(10分) (将原题要解决的问题转换成用计算机要解决的问题) Eg: 将用户输入的一组整型数据进行排序,构造成大顶堆(根据个人程序具体而定);将已建立的大顶堆进行堆排序;在对话框中显示出已建成堆的具体结构;若操作错误能够给出用户相应的提示;通过MFC实现可视化界面的操作;(大家可以适当补充) 二.设计思想(5分) 1.将一组无序序列构造成一个堆: 假设序列长度为n,以线性数组作为存储,那么从第i = {n/2} ({},表示下界)个元素开始调整(因为叶子结点已经是堆无需调整),分别和他的左右子树结点(第一次只有叶子结点)比较大小,和较大的那个交换;然后i自减,对这个新的i元素进行调整,同样和他的左右子树(这时候左右子树已经是小根堆)根结点比较后进行调整,如果破坏了其中一个子???的堆平衡,那么需要继续对这个子树进行堆调整;这样调整到序列第一个元素后,这个序列就已经是大根堆 2.对堆进行堆排序 构造了堆之后,就可以对其进行堆排序 堆的最大元素已经在堆顶,将其和序列最后一个元素交换 这样得到两个序列, A=[1 ... n-1 ] B= [ n] ,其中B是有序的,A失去了大顶堆的平衡,这时候继续对A进行调整,将其调整为大顶堆 调整为大顶堆后,和上面过程类似,一直到A中只余下一个元素为止 设计表示(5分) 给出具体存储结构,和关键函数操作功能说明,若没有存储结构,可以写宏定义等作为补充; 实现注释(5分) 能描述出涉及操作的参数含义,及操作实现的具体方案 设计表示(5分) 画出整体流程,及核心算法流程(本实验写出建堆过程和堆排序过程的流程图即可) 用户手册(10分) 描述具体,能够根据该手册进行程序的使用,并给出操作注意事项;(依个人程序情况而定) 调试报告(10分) 表达具体,能诊断出给定输入得不到正确输出的原因和解决方案 **大家别忘了写总结,10分呢 6.源程序关键代码和结果(示例) 6.1 源程序关键代码 //function.cpp #include funcation.h Status JudgeInput(int amp;num,char *buffer,Int amp;IntTable)//编辑框一的判断 { char JudgeNumberBuffer[11]={#39;0#39;,#39;1#39;,#39;2#39;,#39;3#39;,#39;4#39;,#39;5#39;,#39;6#39;,#39;7#39;,#39;8#39;,#39;9#39;,#39; #39;}; //判断第一个编辑框是否为空 if(num==0) return ERROR;//输入为空 //判断第一个编辑框是否输入都是数字和空格 for(int i=0;inum;i++) {} //判断第一个编辑框的开头和结尾必须不是空格 if((*buffer==#39; #39;)||(*(buffer+num-1)==#39; #39;)) return ERROR; int Count=1; //将字符转化为数字 for(int n=0;nnum;n++) { } char *p;//临时指针 int *HeapSortpoint;//用于存放数据的指针 p=buffer; if(*(buffer+n)==#39; #39;) { } *(buffer+n)=#39;\0#39;; Count++; if(*(buffer+n+1)==#39; #39;) return ERROR; for(int j=0;j11;j++) if(*(buffer+i)==JudgeNumberBuffer[j])break; return ERROR; if(j==11) HeapSortpoint=(int *)malloc((Count+1)*sizeof(int)); IntTable=HeapSortpoint; int Ikey=1; while(pbuffer+num) } {} num=Count;//将数组数目传给num *IntTable=num;//将个数放入里面 return OK; Ikey++; p=p+strlen(p)+1;HeapSortpoint[Ikey]=atoi(p);//将数据存入数组中 void HeapAdjust(int *Buffer,int s,int m)//用于堆调整 { } void YZHeapSort(int *Buffer) { } for(int i=*Buffer/2;i0;--i) He

文档评论(0)

1045141460 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档