码迷,mamicode.com
首页 > 其他好文 > 详细

20182315 实验7实验报告

时间:2019-11-17 23:30:22      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:出栈   虚拟   ret   article   搜索   变换   tin   返回   ref   

学号: 20182315 《数据结构与面向对象程序设计》实验七报告

课程:《程序设计与数据结构》

班级: 1823

姓名: 邹家伟

学号:20182315

实验教师:王志强

实验日期:2019年10月28日

必修/选修: 必修

1.实验内容

  • 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。

  • 把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
    把测试代码放test包中

  • 补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)

  • 编写Android程序对实现各种查找与排序算法进行测试

2. 实验过程及结果

  • 通过回顾ppt,复习课本,完成实验一,总体难度不大。技术图片

技术图片

  • 实验2:因虚拟机已卸,开启idea的terminal选项,在里面运用命令行运行Java代码,此环节经网络搜索,要首先配置jdk环境变量,才可在在命令行中用javac运行。

  • 实验3的难度整体不大,因老师已给出博客,难度只在于自行理解代码及实验原理,涉猎更多的排序方法。其原理大致相同,本质都是对二分法的各种告高阶改良。
    技术图片

  • 实验四的难度可以说最大,需要对堆,二叉树整体综合理解学习,以及递归的整体学习,才可做完实验。。。技术图片

技术图片

技术图片

  • 实验五也是对监听器的运用,对布局的应用。难度不大。

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

  • 问题1:进行希尔排序时,对排序原理产生误解,导致排序失败。
    技术图片

  • 问题1解决方案:第二轮循环排序时,一旦链上的节点产生变换,链上的每一个元素都要参与比较,如果符合对调位置条件,就要发生对调。而之前的理解是,如果符合对调条件,就将这两个数对调,忽略链上的其他值。
  • 问题2:实验4中,对堆这种结构理解不清,堆的构造与树不同,其结点调换也比树灵活的多。
    技术图片

  • 问题2解决方案:通过网络查找,理解了堆逻辑构图与理论构图的对应关系,可用数组辅助理解,通过数组下标的灵活运用,实现插入删除的操作。如图所示,每次排出一个最值节点,堆就少了一个需要排序的数,按此递归,直至堆只有一个节点

技术图片

  • 问题三:对递归算法理解应用不到位。

技术图片

  • 问题三解决方案:递归就是方法调用自己,在方法中设置return条件,在适当时跳出递归。递归的运用思路为:首先分析整体一小块,设置return条件,然后在在返回值里继续运算。

  • 问题4:技术图片
    在实验中经常会出现此类越界错误,在循环,递归中经常出现此类报错。
  • 实验4解决方案:在出栈,查看栈顶,取下一位节点之前,应加上判断语句加以判断,如果实在因粗心大意无法避免,时候有针对的调试也可纠正错误。

其他(感悟、思考等)

在数据结构学习中,应深刻理解每种结构的构造特性。对于递归,栈,队列这种基础结构,更是复杂结构的基础。对于出栈入栈,出对入队的特性,要在堆,数学习中适当的加以运用。

参考资料

20182315 实验7实验报告

标签:出栈   虚拟   ret   article   搜索   变换   tin   返回   ref   

原文地址:https://www.cnblogs.com/zjwbk/p/11855496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!