查找排序实验报告.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验十: 查找、排序 计算机学院 12级2班 121102013 李龙 实验目的: 掌握折半查找算法的思想。 实现折半查找的算法。 掌握常见的排序算法(插入排序、交换排序、选择排序等)的思想、特点及其适用条件。 能够分析各种算法的效率。 熟练的掌常见的排序算法的程序步骤。 实验内容: 1.建立一静态有序表。 2.用一个函数实现折半查找算法。 3.在主函数中输入一组数据,测试算法的正确性。 4. 按照快速排序思想实现快速排序算法。 5. 在主函数中输入一段数据,测试算法的正确性。 设计思路: 开始的时候提示输入一组数据。并存入一维数组中,接下来调用一系列查找算法对其进行处理。顺序查找只是从头到尾进行遍历。二分查找则是先对数据进行排序,然后利用三个标志,分别指向最大,中间和最小数据,接下来根据待查找数据和中间数据的比较不断移动标志,直至找到。二叉排序树则是先构造,构造部分花费最多的精力,比根节点数据大的结点放入根节点的右子树,比根节点数据小的放入根节点的左子树,其实完全可以利用递归实现,这里使用的循环来实现的,感觉这里可以尝试用递归。当二叉树建好后,中序遍历序列即为由小到大的有序序列,查找次数不会超过二叉树的深度。这里还使用了广义表输出二叉树,以使得更直观。哈希表则是利用给定的函数式建立索引,方便查找 总体设计: 静态表的存储结构 typedef struct { int *elem; int length; }sstable; void CreateData(int data[],int length);//为一个数组赋值 //此函数是折半查找函数。其中data是所查寻的数组,length是数组的长度。x是所要查找的数,返回的值是数据x在数组中的位置 int Bisearch(int data[],int x,int begin,int last);//折半查找函数,使用过程中只需要给出数组名字,要查找的数值x,数组的起始位置begin及末位置即可。 void PrintData(int data[],int length);//输出一个数组的所有元素。 定义void quickSort(int *arr,int l,int r)函数 实验结果: 输入查找数字:7 如上图 查找--得出结果 排序--得出结果 实验总结: 本次实验程序结构比较简单,无需复杂的函数调用。但是由于本人编程基础不够扎实,在面对需要很多数组声明和调用的时候,经常弄错,在编译的过程中出现了很多次内存调用出错的情况。后来发现是二维数组的定义上没有做好,引入了动态定义的方法解决了这一问题。 通过本次实验,加深了我对查找表的认识。但是,实验中也出现了问题,程序循环不能良好退出。希望经过以后的学习我能解决这些问题。 代码:查找代码---见附表1 排序代码—见附表2

文档评论(0)

137****7707 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档