- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 管材直线度检测机系统设计毕业论文正文.doc
- 管理干部培训宿舍楼(一)工程施工组织设计.doc
- 管桁架工程施工方案.doc
- 管理服务中心办公楼工程施工组织.doc
- 管线改造工程施工方案.doc
- 管道施工方案_(氟化氢管道).doc
- 管道方案.doc
- 管道焊接及热处理施工方案111.doc
- 箱形桥施工方案.doc
- 箱梁专项施工方案目录及正文(10.28).doc
- 2025年中国电力电缆行业市场全景评估及投资前景展望报告.docx
- 2025年中国家用称行业市场全景评估及发展战略规划报告.docx
- 2025年中国引风机行业市场调查研究及发展战略研究报告.docx
- 中国食品搅拌机行业市场调研分析及投资战略咨询报告.docx
- 2025年中国广告牌行业发展运行现状及发展趋势预测报告.docx
- 中国航空电源车行业发展前景预测及投资战略研究报告.docx
- 2020-2025年中国激光设备制造行业发展前景预测及投资战略研究报告.docx
- 中国智慧停车行业全景评估及投资前景预测报告.docx
- 中国手持红外测温仪行业发展监测及投资战略研究报告.docx
- 中国智能云机器人行业市场前景预测及投资方向研究报告.docx
文档评论(0)