综合算法计实验报告.docVIP

  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文档。上传文档
查看更多
综合算法计实验报告

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)

135****6041 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档