172322 2018-2019-1 《程序设计与数据结构》实验三报告
172322 2018-2019-1 《程序设计与数据结构》实验三报告
- 课程:《程序设计与数据结构》
- 班级: 1723
- 姓名: 张昊然
- 学号:20172322
- 实验教师:王志强
- 助教:张之睿/张师瑜
- 实验日期:2018年11月19日
- 必修/选修: 必修
1.实验内容
-
此处填写实验的具体内容:
-
节点一:定义一个
Searching
和Sorting
类,并在类中实现linearSearch
(教材P162 ),SelectionSort
方法(P169),最后完成测试。要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位,提交运行结果图。 -
节点二:重构你的代码
把Sorting.java
Searching.java
放入 cn.edu.besti.cs1723.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1723.G2301
),把测试代码放test包中重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种) -
节点三:参考http://www.cnblogs.com/maybe2030/p/4715035.html 在
Searching
中补充查找算法并测试,提交运行结果截图 -
节点四:补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个),测试实现的算法(正常,异常,边界),提交运行结果截图
-
节点五:编写Android程序对各种查找与排序算法进行测试,提交运行结果截图,推送代码到码云
2.实验过程及结果
过程:
- 本次实验总共五个提交点。我也分为五个部分来写过程。
- 第一:因为之前已经将教材代码放入IDEA中,所以直接复制粘贴
linearSearch
和SelectionSort
方法进实验要求的Searching
和Sorting
类中,并且按照要求使用Junit测试边界、逆序、错误等情况。 - 第二:在第一个节点的基础上将
Searching
和Sorting
类放入cn.edu.besti.cs1723.zhr2301
包中后进行测试,然后在Linux虚拟机中建立cn.edu.besti.cs1723.zhr2301
将Searching
和Sorting
类其中,然后在命令行中进行测试。 - 第三:补充了二分查找、插值查找、斐波那契查找法,并用Junit进行测试。
- 第四:补充了冒泡排序、归并排序、插入排序、希尔排序、堆排序、快速排序方法,并利用Junit进行测试。
- 第五:打开
AndroidStudio
并设计界面,将Sorting
和Searching
类放入其中,运行app对固定数组的查找与排序进行测试。
- 第一:因为之前已经将教材代码放入IDEA中,所以直接复制粘贴
结果:
1.
2.
3.
4.
5.
3.实验过程中遇到的问题和解决过程
- 问题1:在节点一中要求利用Junit进行测试,但相关的测试方法已经有些遗忘,在编写测试类初期始终无法进行正常的测试。
- 问题1解决方案:查询资料后了解到,所有的Junit测试类都需要
extends TestCase
不然无法进行测试;所有的测试方法的名称都必须要以test
打头,例如测试顺序查找,其Junit方法名为testSequenceSearch()
,不然也无法进行测试。 - 问题2:在做节点二时需要在命令行中对
Searching
和Sorting
类进行测试,但是在命令行的Junit测试方法自己并不熟悉。 - 问题2解决方案:在网上搜索资料查询如何在命令行中进行Junit测试后发现自己的Linux系统并没有安装相关组件,最后询问同学他们如何进行测试,发现并没有利用Junit,所以自己也就放弃了Junit测试,写了一些
main
方法来进行测试。 - 问题3:在节点五利用
AndroidStudio
编写app进行测试时对于部分使用方法已经忘记,也遇到了不少困难。 - 问题3解决方案:向结对伙伴范雯琪同学询问了相关问题,并且参考之前的app,最终实现了相关要求。
- 问题4:在对
selectionSort
方法进行测试时最初的Junit测试法测试时出现了一些问题,导致比较的是数组的哈希值,如图:
- 问题4解决方案:重新令了一个数组,如图,便解决了问题。
其他(感悟、思考等)
感悟
- 许多东西都是需要多多练习才能做到不遗忘的。例如Junit测试和AS的使用等等。