20182322 2019-2020-1 《数据结构与面向对象程序设计》实验7报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 王美皓
学号:20182322
实验教师:王志强
实验日期:2019年10月30日
必修/选修: 必修
1.实验内容
1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
2.重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
3.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
4.补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
5.编写Android程序对实现各种查找与排序算法进行测试,提交运行结果截图
2. 实验过程及结果
-
查找与排序-1
-
查找与排序-2
-
查找与排序-3
-
查找与排序-4
3. 实验过程中遇到的问题和解决过程
- 问题1:做实验1的Sorting测试的时候出现了一个问题
Comparable[] arr9 = new Comparable[1];//9
EXP1test i =new EXP1test();
assertEquals("[null]",i.selectionSort(arr9));
可以运行
Comparable[] arr10 = new Comparable[999]; //空指针异常10
EXP1test j =new EXP1test();
assertEquals("[null]",j.selectionSort(arr10));
不可以运行,为什么
- 问题1解决方案:我当时做作业的时候是这样思考的:arr9和arr10应该都应该都是边界异常的情况,但是当我测试的时候我发现arr9可以运行但是arr10会报出边界异常的情况。开始我想的是也许是因为arr10中太大了,于是就把999换成了99,但是这样出来的结果仍然是边界异常,我把数组的大小换成2,结果仍然是边界异常。解释就是当数组为1的时候,测试出来的就是[null],已经异常了。当数组增加为2的时候测试出来是[null][null]。随着数组大小的增加,空数组的数量越来越多,太多的时候就显示不出来了。
- 问题2:在节点一中要求利用Junit进行测试,但相关的测试方法已经有些遗忘,在编写测试类初期始终无法进行正常的测试。
- 问题2解决方案:查询资料后了解到,所有的Junit测试类都需要
extends TestCase
不然无法进行测试;所有的测试方法的名称都必须要以test
打头,例如测试顺序查找,其Junit方法名为testSequenceSearch()
,不然也无法进行测试。 - 问题3:在做节点二时需要在命令行中对
Searching
和Sorting
类进行测试,但是在命令行的Junit测试方法自己并不熟悉。 - 问题3解决方案:在网上搜索资料查询如何在命令行中进行Junit测试后发现自己的Linux系统并没有安装相关组件,最后询问同学他们如何进行测试,发现并没有利用Junit,所以自己也就放弃了Junit测试,写了一些
main
方法来进行测试。
其他(感悟、思考等)
- 这次实验总的来说还是偏难,卡了好久的时间,一些操作还是不熟,还需多加练习。
- 这次实验是对查找和排序知识的一次深入学习,通过这次实验对知识的掌握加深了。