20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》实验七报告

20182308 2019-2020-1 《数据结构与面向对象程序设计》实验七报告

课程:《程序设计与数据结构》
班级: 1823
姓名: 华罗晗
学号:20182308
实验教师:王志强
实验日期:2019年11月4日
必修/选修: 必修

1.实验内容

1、定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。

2、重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)

3、参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图

4、补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)

2. 实验过程及结果

1、将课本上的两个类的代码进行部分修改就可以,为了方便测试边界,在形参中设置了最大值、最小值(Max、min)。截图为Junit测试的结果。


2、这一步的内容相对较少,只要放在一个大文件夹下即可。但是因为我的git出现了问题,因此是在系统中直接创建了一个文件夹、码云仓库中再创建一个文件夹进行的该操作。编译运行没有问题。同时我的虚拟机Ubuntu也因为之前的操作失误重置了,因此发代码到室友的电脑上进行了编译运行和测试。



3、根据该网站内容补充了一些查找算法,运行结果如下图所示。

4、根据课本中的代码,把Shell排序和堆排序的方法进行了补充,并根据实际情况把二叉树排序放在了另外的类中,然后编译运行测试。结果如下图所示。


3. 实验过程中遇到的问题和解决过程

  • 问题1:参考前人的代码并学习修改时,遇到的输入输出(形参实参)与课本中给出的代码不匹配的问题。
  • 问题1解决方案:考虑到课本中的searching类输入内容少,导致功能比较贫乏,因此在课本代码中提到的输入量(形参)的基础上又加了两个变量(max,min)来表示一个数组中的查找范围,并相应地修改了循环条件,
  • 问题2:二叉树排序中需要用到先前定义的二叉树,因为很难作为一个方法在Sorting类中单独存在,所以在测试运行的时候总是报错。
  • 问题2解决方案:将Shell排序和堆排序的相关方法补充到了课本的Sorting类中,而二叉树排序的方法就单独创建了一个类,并且单独运行了。而运行和测试的结果也如上面实验过程中展示的那样。

其他(感悟、思考等)

Junit的使用是我们刚刚进入IDEA学习的时候就开始学习的东西,虽然经常感觉流程比较复杂,但是运行的理念并不复杂,而且实行起来每一步也都不复杂。在我们使用驱动类、人为地看运行结果来判断程序是否符合要求的同时也可以尝试着捡起IDEA Junit的相关内容,并时常去使用。

参考资料

posted on 2019-11-15 08:41  20182308hlh  阅读(155)  评论(0编辑  收藏  举报

导航