您的位置:首页 > 其它

查找与排序-实验报告

2017-11-14 02:15 246 查看

查找和排序-实验报告

代码托管地址

码云链接

实验-1

实验要求


完成教材P302 Searching.Java ,P305 Sorting.java中方法的测试

不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位

提交运行结果图(可多张)


实验步骤

在书上已写好的类的基础上添加测试用例

测试结果

正常



异常



正序



逆序



实验-2

实验要求


重构你的代码

把Sorting.java Searching.java放入 cn.edu.besti.cs1623.(姓名首字母+四位学号) 包中

把测试代码放test包中

重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)



创建后,直接拖动新package里,改一下import

IDEA





命令行

原本装的虚拟机在系统更新后消失了,IDEA里的终端又用不了,按照在新版 Win10 中启用 Linux Bash 环境_百度经验的步骤操作,可是遇到了错误代码:x80070005,上网搜了下,但win10 0x80070005 拒绝访问怎么办 解决教程_西西软件资Win8.1无法安装应用并显示0x80070005错误_百度经验均未能解决问题,打算再去问问老师,或者有必要的话,我抽个时间重装一下虚拟机。

实验-3

实验要求


参考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中补充查找算法并测试

提交运行结果截图


实验步骤

七大查找方法中顺序查找和二分查找已经完成了,现要对剩下的五种查找方法进行实现并测试

测试结果

插值查找

用三点 lagrange 插值算法实现,用余项公式求误差;



斐波那契查找

斐波那契查找,算法假定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]的斐波那契树



树表查找

由于二叉搜索树定义上的特殊性,只需根据输入的 key 值从根开始进行比较,若小于根的 key 值,则与根的左子树比较,大于根的key值与根的右子树比较,以此类推,找到则返回相应节点,否则返回 null。



分块查找

分块查找要求把一个数据分为若干块,每一块里面的元素可以是无序的,但是块与块之间的元素需要是有序的。(对于一个非递减的数列来说,第i块中的每个元素一定比第i-1块中的任意元素大)



哈希查找

哈希查找是通过计算数据元素的存储地址进行查找的一种方法。O(1)的查找,即所谓的秒杀。哈希查找的本质是先将数据映射成它的哈希值。哈希查找的核心是构造一个哈希函数,它将原来直观、整洁的数据映射为看上去似乎是随机的一些整数。

哈希查找的操作步骤:

用给定的哈希函数构造哈希表;

根据选择的冲突处理方法解决地址冲突;

在哈希表的基础上执行哈希查找。



实验-4

实验要求


补充实现课上讲过的排序方法:希尔排序,堆排序,桶排序,二叉树排序等

测试实现的算法(正常,异常,边界)

提交运行结果截图

推送相关代码到码云上


希尔排序

Shell排序算法的核心思想 —— 分组插入排序。改变步长,用每种步长把数据划分成相应的分组;然后对每个组内的数据进行排序。



堆排序

思想:堆的根节点值最大(最小),将无序序列调整成一个堆,就能找出这个序列的最大值(最小值),将找出的值交换到序列的最后或最前,



桶排序

桶排序是在已知数据的范围的条件下,创建若干个桶,根据相应的比较规则将待排数据落入各个对应的桶中,最后扫描桶来实现排序。

这个概念是从http://www.cnblogs.com/hapjin/p/5534262.html摘取的。

桶排序更接近于一种标记,当某个数出现了,就在对应的桶中mark一下。



二叉树排序

基本操作:

(1)二叉排序树的查找;(2)二叉排序树的插入;(3)二叉树的中序遍历;(4)初始化栈;(5)出栈和入栈。(6)动态内存管理。



实验总结

这次实验是在原来测试的基础上,结合后面学到的知识加以拓展应用。在边做边查资料的过程中,补充了不少知识。

参考资料

Java实现lagrange 插值法 - CSDN博客

各种查找的实现Java - CSDN博客

查找---分块查找 - CSDN博客

查找算法之哈希查找 - CSDN博客

Java实现Shell排序算法 - CSDN博客

[排序算法]--桶排序的Java实现 - CSDN博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: