实验8查找与排序算法的实现和应用.doc

实验8查找与排序算法的实现和应用.doc

ID:58123345

大小:230.50 KB

页数:13页

时间:2020-04-24

实验8查找与排序算法的实现和应用.doc_第1页
实验8查找与排序算法的实现和应用.doc_第2页
实验8查找与排序算法的实现和应用.doc_第3页
实验8查找与排序算法的实现和应用.doc_第4页
实验8查找与排序算法的实现和应用.doc_第5页
资源描述:

《实验8查找与排序算法的实现和应用.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、附页班级学号姓名实验组别实验日期室温报告日期成绩报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:查找与排序算法的实现和应用实验目的:1.掌握顺序表中查找的实现及监视哨的作用。2.掌握折半查找所需的条件、折半查找的过程和实现方法。3.掌握二叉排序树的创建过程,掌握二叉排序树查找过程的实现。4.掌握哈希表的基本概念,熟悉哈希函数的选择方法,掌握使用线性探测法和链地址法进行冲突解决的方法。5.掌握直接插入排序、希尔排序、快速排序算法的实现。实验环境(硬/软件要求):Windows2000,VisualC++6.0实验内容:通过具体算

2、法程序,进一步加深对各种查找算法的掌握,以及对实际应用中问题解决方法的掌握。各查找算法的输入序列为:265371611159154819输出要求:查找关键字37,给出查找结果。对于给定的某无序序列,分别用直接插入排序、希尔排序、快速排序等方法进行排序,并输出每种排序下的各趟排序结果。各排序算法输入的无序序列为:265371611159154819。实验要求:一、查找法1.顺序查找首先从键盘输入一个数据序列生成一个顺序表,然后从键盘上任意输入一个值,在顺序表中进行查找。2.折半查找任意输入一组数据作为个数据元素的键值,首先将此序列进行排序,然后再

3、改有序表上使用折半查找算法进一对给定值key的查找。3.二叉树查找任意输入一组数据作为二叉排序树中节点的键值,首先创建一颗二叉排序树,然后再次二叉排序树上实现对一定k的查找过程。4.哈希表查找任意输入一组数值作为个元素的键值,哈希函数为Hash(key)=key%11,用线性探测再散列法解决冲突问题。二、排序算法编程实现直接插入排序、希尔排序、快速排序各算法函数;并编写主函数对各排序函数进行测试。实验原理:1.顺序查找:在一个已知无(或有序)序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从最后一个开始逐个比较,直到找出与

4、给定关键字相同的数为止,它的缺点是效率低下。13附页二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。2.哈希查找:哈

5、希查找的操作步骤:⑴用给定的哈希函数构造哈希表;⑵根据选择的冲突处理方法解决地址冲突;⑶在哈希表的基础上执行哈希查找。哈希查找的本质是先将数据映射成它的哈希值。哈希查找的核心是构造一个哈希函数,它将原来直观、整洁的数据映射为看上去似乎是随机的一些整数。哈希查找的产生有这样一种背景——有些数据本身是无法排序的(如图像),有些数据是很难比较的(如图像)。如果数据本身是无法排序的,就不能对它们进行比较查找。如果数据是很难比较的,即使采用折半查找,要比较的次数也是非常多的。因此,哈希查找并不查找数据本身,而是先将数据映射为一个整数(它的哈希值),并将哈

6、希值相同的数据存放在同一个位置一即以哈希值为索引构造一个数组。在哈希查找的过程中,只需先将要查找的数据映射为它的哈希值,然后查找具有这个哈希值的数据,这就大大减少了查找次数。如果构造哈希函数的参数经过精心设计,内存空间也足以存放哈希表,查找一个数据元素所需的比较次数基本上就接近于一次。3.排序算法:排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。开始流程图:输入查找条件用户输入输出结果排序创建二叉树是是否继续中序遍历否结束实验代码:一、查找法1、顺序查找#in

7、clude#defineMAX10013附页typedefintkeytype;typedefstruct{keytypekey;}elemtype;typedefstruct{elemtypeelem[MAX+1];intlength;}SStable;voidcreate_seq(SStable*list);intseq_search(SStable*list,keytypek);voidmain(){SStable*list,table;keytypekey;inti;list=&table;printf("请输入顺序表

8、的长度:");scanf("%d",&list->length);create_seq(list);printf("创建的顺序表内容:");for

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。