查找与排序-实验报告
2017-11-14 02:15
246 查看
查找和排序-实验报告
代码托管地址
码云链接实验-1
实验要求
完成教材P302 Searching.Java ,P305 Sorting.java中方法的测试
不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图(可多张)
实验步骤
在书上已写好的类的基础上添加测试用例测试结果
正常![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114011842499-287781099.png)
异常
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114011911984-1533158297.png)
正序
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114012135187-539585942.png)
逆序
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114011944202-203816056.png)
实验-2
实验要求
重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1623.(姓名首字母+四位学号) 包中
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
创建后,直接拖动新package里,改一下import
IDEA
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114013055796-841409832.png)
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114020439687-1547542543.png)
命令行
原本装的虚拟机在系统更新后消失了,IDEA里的终端又用不了,按照在新版 Win10 中启用 Linux Bash 环境_百度经验的步骤操作,可是遇到了错误代码:x80070005,上网搜了下,但win10 0x80070005 拒绝访问怎么办 解决教程_西西软件资和Win8.1无法安装应用并显示0x80070005错误_百度经验均未能解决问题,打算再去问问老师,或者有必要的话,我抽个时间重装一下虚拟机。实验-3
实验要求
参考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中补充查找算法并测试
提交运行结果截图
实验步骤
七大查找方法中顺序查找和二分查找已经完成了,现要对剩下的五种查找方法进行实现并测试测试结果
插值查找用三点 lagrange 插值算法实现,用余项公式求误差;
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114015224046-1638932203.png)
斐波那契查找
斐波那契查找,算法假定n+1是一个斐波那契数,即n+1=f[m+1]
T(k)表示k阶斐波那契树,若k=0或1则此树就是0;若k>=2;则树T(k)根为f[k]
左子树为T[k-1],右子树为阶数为k-2且所有结点之编号都增加f[k]的斐波那契树
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114015612796-1557478107.png)
树表查找
由于二叉搜索树定义上的特殊性,只需根据输入的 key 值从根开始进行比较,若小于根的 key 值,则与根的左子树比较,大于根的key值与根的右子树比较,以此类推,找到则返回相应节点,否则返回 null。
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114023824718-1767790872.png)
分块查找
分块查找要求把一个数据分为若干块,每一块里面的元素可以是无序的,但是块与块之间的元素需要是有序的。(对于一个非递减的数列来说,第i块中的每个元素一定比第i-1块中的任意元素大)
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114020144843-1049743766.png)
哈希查找
哈希查找是通过计算数据元素的存储地址进行查找的一种方法。O(1)的查找,即所谓的秒杀。哈希查找的本质是先将数据映射成它的哈希值。哈希查找的核心是构造一个哈希函数,它将原来直观、整洁的数据映射为看上去似乎是随机的一些整数。
哈希查找的操作步骤:
用给定的哈希函数构造哈希表;
根据选择的冲突处理方法解决地址冲突;
在哈希表的基础上执行哈希查找。
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114021416343-122500789.png)
实验-4
实验要求
补充实现课上讲过的排序方法:希尔排序,堆排序,桶排序,二叉树排序等
测试实现的算法(正常,异常,边界)
提交运行结果截图
推送相关代码到码云上
希尔排序
Shell排序算法的核心思想 —— 分组插入排序。改变步长,用每种步长把数据划分成相应的分组;然后对每个组内的数据进行排序。
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114020853999-1458981689.png)
堆排序
思想:堆的根节点值最大(最小),将无序序列调整成一个堆,就能找出这个序列的最大值(最小值),将找出的值交换到序列的最后或最前,
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114021204968-1288656708.png)
桶排序
桶排序是在已知数据的范围的条件下,创建若干个桶,根据相应的比较规则将待排数据落入各个对应的桶中,最后扫描桶来实现排序。
这个概念是从http://www.cnblogs.com/hapjin/p/5534262.html摘取的。
桶排序更接近于一种标记,当某个数出现了,就在对应的桶中mark一下。
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171114020922374-868742991.png)
二叉树排序
基本操作:
(1)二叉排序树的查找;(2)二叉排序树的插入;(3)二叉树的中序遍历;(4)初始化栈;(5)出栈和入栈。(6)动态内存管理。
![](https://images2017.cnblogs.com/blog/1062634/201711/1062634-20171115005615687-1175364501.png)
实验总结
这次实验是在原来测试的基础上,结合后面学到的知识加以拓展应用。在边做边查资料的过程中,补充了不少知识。参考资料
Java实现lagrange 插值法 - CSDN博客各种查找的实现Java - CSDN博客
查找---分块查找 - CSDN博客
查找算法之哈希查找 - CSDN博客
Java实现Shell排序算法 - CSDN博客
[排序算法]--桶排序的Java实现 - CSDN博客
相关文章推荐
- 20162322 朱娅霖 实验报告三 查找与排序
- 实验三 查找和排序 实验报告 20162305
- 20162311 实验三-查找与排序 实验报告
- 第十周实验报告:实验三 查找和排序
- 2017-2018-1 20162306 实验三 查找与排序 实验报告
- 第六周作业总结(内含查找排序课堂测试及课下作业报告)
- 查找实验报告
- 数学与计算机学院程序设计实验报告实验题目用函数实现字符串排序
- C语言 数据结构排序与查找 数据结构实验之排序二:交换排序
- 实验三 查找与排序
- C++程序设计实验报告(十八)----从文件中读入数据,排序并输出到另外一个文件中
- Pku acm 2371 Questions and answers 排序算法解题报告(三)----二叉查找数(BST)排序
- 20162313 苑洪铭 实验三 查找与排序
- 实验三 查找与排序
- 2017-2018-1 20162330 实验三 查找与排序
- 2017-2018-1 20162316刘诚昊 实验三 查找与排序
- C语言 数据结构排序与查找 数据结构实验之排序五:归并求逆序数
- 20162319莫礼钟 实验三 查找与排序
- C++程序设计实验报告(八十二)---第十六周任务#3-2(学会二分查找)
- 实验三-查找与排序-5