- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
综合算法计实验报告
PAGE18 / SECTIONPAGES \* MERGEFORMAT 18
学生学号
学 生 实 验 报 告 书
实验课程名称
应用数据结构
开 课 学 院
指导教师姓名
学 生 姓 名
学生专业班级
2012 — 2013 学年 第 2 学期
实验项目名称
综合算法设计
同 组 者
无
实验日期
2013年 06 月 18日
第一部分:实验预习报告
实验目的、意义
掌握查找的含义
掌握基本查找操作的算法和实现
掌握动态查找算法的实现、应用场合与优缺点
能够针对具体问题,灵活选用适宜的查找算法
掌握排序的基本概念,对排序的稳定性及排序的时间复杂度有深刻的认识
对比折半插入排序和Shell排序的异同
掌握选择排序中堆排序的基本思想和算法实现
掌握快速排序的基本思想和算法实现
了解归并排序算法的基本思想和程序实现
了解基数排序算法的基本思想和程序实现
掌握Hash排序算法的基本思想和程序实现
在上述内容的基础上,将所有查找及排序算法整合在一个程序中
实验基本原理与方法
本实验涉及各类查找和排序算法。
静态查找,折半查找的思想为:设查找表中的元素存放在数组r中,数据元素的下标范围为[low, high],要查找的关键字值为key,中间元素的下标为mid=|_(low + high) /2_|(向下取整),令key与r[mid]的关键字比较:
若key=r[mid].key,查找成功,下标为m的记录即为所求,返回mid。
若keyr[mid].key,所要找的记录只能在左半部分记录中,再对左半部分使用折半查找法继续进行查找,搜索区间缩小了一半。
若keyr[mid].key,所要找的记录只能在右半部分记录中,再对右半部分使用折半查找法继续进行查找,搜索区间缩小了一半。
重复上述过程,直到找到查找表中某一个数据元素的关键字的值等于给定的值key,说明查找成功;或者出现low的值大于high的情况,说明查找不成功。
动态查找,编程实现一个开放式的高校本科招生最低录取分数线的查询系统,供师生和家长等查询,高校自愿放入该校的信息,可能随时有高校加入。要求实现的查询功能有:
①查询等于用户给定分数的高校;
②查询大于(或小于)用户给定分数的高校③查询最低录取分数线在用户给定的分数段中的高校。
直接插入排序:将当前无序区的第一个记录插入到有序区中适当位置。
折半查找法:在有序表中进行,先确定表的中点位置,再通过比较确定下一步查找哪个半区。
Shell排序:先取定一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组,所有距离为d1倍数的记录放在同一个组中,在各组内进行直接插入排序;然后取第二个增量重复上述分组和排序,直至所取的增量dt=1(dtdt-1…d2d1),即所有记录放在同一组中进行直接插入排序为止。
堆排序是利用大顶堆(或小顶堆)来选取当前无序区中关键字最大(或最小)的记录实现排序
快速排序是对冒泡法的改进,其基本思想是:通过一趟排序将待排文件分割成独立的两部分,其中一部分记录的关键字值均比另一部分记录的关键字小,然后分别对这两部分进行排序,以达到整个序列有序。
归并的思想:将两个或两个以上的有序表合并成一个有序表。利用归并的思想实现排序,假设初始的序列含有n个记录,可以看成n个有序的子序列,每个子序列的长度为m,然后把i(≥2)个子序列归并,得到n/i个长度为i的子序列;再继续归并,如此重复直到得到一个长度为n的有序序列为止。通常使用的是i=2的二路归并法。
基数排序的基本思想是采用多关键字的排序。设记录关键字R[i]由d个分量ki1, ki2, …, kid组成,设每个分量的取值范围为{ti|i=1, 2, …, m,且t1t2…tm}。准备m个箱子,先按低位分箱再按序号一次将各个非空箱子里的记录收集起来,再对新收集起来的元素依次按较高的位分箱,直到最高位。分箱即将第s个关键字等于ti的全部记录装入第i个箱子里。按最高位分箱后,按序号一次将各个非空箱子里的记录收集起来,得到的元素序列就是有序的。
Hash排序是在Hash查找的基础上演变而来。对待排序列采用单调的Hash函数,并用链地址法处理冲突,最后用一定规则收集存储好的数据从而得到有序序列。
主要仪器设备及耗材
安装有VC++ 6.0运行环境的电脑,无耗材要求。
实验方案或技术路线
本实验含有五部分内容——静态查找、动态查找、插入排序与选择排序、快速排序与归并排序、查找及排序算法集成。
A.静态查找部分
查找表的存储结构为有序表,即表中记录按关键字大小排序存放。输入待查数据元素的关键字进行查找。为了简化算法,记录只含一个整型量关键字字段,记录的其余数据部分忽略不考虑。此程序中要求对整型量关键字数据的输入按从小到大排序输入。
B.动态查找部分
主要的功能是
原创力文档


文档评论(0)