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:在做节点二时需要在命令行中对SearchingSorting类进行测试,但是在命令行的Junit测试方法自己并不熟悉。
  • 问题3解决方案:在网上搜索资料查询如何在命令行中进行Junit测试后发现自己的Linux系统并没有安装相关组件,最后询问同学他们如何进行测试,发现并没有利用Junit,所以自己也就放弃了Junit测试,写了一些main方法来进行测试。

其他(感悟、思考等)

  • 这次实验总的来说还是偏难,卡了好久的时间,一些操作还是不熟,还需多加练习。
  • 这次实验是对查找和排序知识的一次深入学习,通过这次实验对知识的掌握加深了。

参考资料

posted @ 2019-11-16 22:34  20182322王美皓  阅读(138)  评论(0编辑  收藏  举报