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

综合算法设计实验报告.doc

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

学生学号 学 生 实 验 报 告 书 实验课程名称 应用数据结构 开 课 学 院 指导教师姓名 学 生 姓 名 学生专业班级 2012 — 2013 学年 第 2 学期 实验项目名称 综合算法设计 同 组 者 无 实验日期 2013年 06 月 18日 第一部分:实验预习报告 实验目的、意义 掌握查找的含义 掌握基本查找操作的算法和实现 掌握动态查找算法的实现、应用场合与优缺点 能够针对具体问题,灵活选用适宜的查找算法 掌握排序的基本概念,对排序的稳定性及排序的时间复杂度有深刻的认识 对比折半插入排序和Shell排序的异同 掌握选择排序中堆排序的基本思想和算法实现 掌握快速排序的基本思想和算法实现 了解归并排序算法的基本思想和程序实现 了解基数排序算法的基本思想和程序实现 掌握Hash排序算法的基本思想和程序实现 在上述内容的基础上,将所有查找及排序算法整合在一个程序中 实验基本原理与方法 本实验涉及各类查找和排序算法。 静态查找,折半查找的思想为:设查找表中的元素存放在数组r中,数据元素的下标范围为[lowhigh],要查找的关键字值为key中间元素的下标为mid=|_(lowhigh) /2_|(向下取整),key与r[mid]的关键字比较: 若key=r[mid].key查找成功,下标为m的记录即为所求,返回mid若keyr[mid].key所要找的记录只能在左半部分记录中,再对左半部分使用折半查若keyr[mid].key所要找的记录只能在右半部分记录中,再对右半部分使用折半查 重复上述过程,直到找到查找表中某一个数据元素的关键字的值等于给定的值key说明查找成功;或者出现low的值大于high的情况,说明查找不成功。…d2d1),即所有记录放在同一组中进行直接插入排序为止。 堆排序是利用大顶堆(或小顶堆)来选取当前无序区中关键字最大(或最小)…, kid组成,设每个分量的取值范围为{ti|i=1, 2, …, m,且t1t2…tm}。准备m个箱子,先按低位分箱再按序号一次将各个非空箱子里的记录收集起来,再对新收集起来的元素依次按较高的位分箱,直到最高位。分箱即将第s个关键字等于ti的全部记录装入第i个箱子里。按最高位分箱后,按序号一次将各个非空箱子里的记录收集起来,得到的元素序列就是有序的。 Hash排序是在Hash查找的基础上演变而来。对待排序列采用单调的Hash函数,并用链地址法处理冲突,最后用一定规则收集存储好的数据查找表的存储结构为有序表,即表中记录按关键字大小排序存放。输入待查数据元素的 void init_Q(Queue Q); 操作结果:构造空队列Q int Q_empty(Queue Q); 初始条件:队列Q存在 操作结果:若Q为空队列,则返回TRUE,否则FALSE int Q_length(Queue Q); 初始条件:队列Q存在 操作结果:返回队列Q的元素个数,即队列长度 int gethead_Q(Queue Q); 初始条件:队列Q存在 操作结果:返回队列Q的队头元素 void en_Q(Queue Q,int e); 初始条件:队列Q存在 操作结果:插入元素e为Q的新的队尾元素。 void de_Q(Queue Q,int e); 初始条件:队列Q存在 操作结果:删除Q的队头元素。 }ADT Queue 线性表: ADT List { 数据对象: D={ai|1=i=n,n=o,ai属于elementtype类型} 数据关系: R={ai,ai+1|ai,ai+1属于D,i=1,...,n-1} 基本运算: InitList(l) DestroyList(l); ...... } 图: ADT Graph { 数据对象: D={ai|1=i=n,n=0,ai属于ELEMTYPE类型} 类型标识符 数据关系: R={ai,aj|ai,aj属于D,1=i=n,1=j=n,其中每个元素可以有零个或多个直接前驱,可以有多个直接后继} 基本运算: InitGraph(g) ClearGraph(g) DFS(g) BFS(g) . . . } 1.2小问题: A .随机数的产生: srand()函数用于设置随机数种,rand()用于产生一个随机数。 B.数据的储存: 由于100000个int型数的数组,所以我采用了malloc()函数来动态分配一数组存储它。 对于一些特别大的数据可以用文件存储,在采用外排序的方式排序。 C.屏幕上无法显示100000条数据,故将数据存储在两个文本文件中。一个是没排好序的,另一个是排好序后的数据。 1.3主要数据结构设计: 归并排序: typedef int KeyType; typedef

文档评论(0)

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

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

1亿VIP精品文档

相关文档