20172318 2017-2018-2 《程序设计与数据结构》第8周学习总结
教材学习内容总结
- 后绑定:延迟到程序执行时的一个方法调用与一个方法定义的绑定
- 由继承实现多态性:一个引用变量可以指向有继承关系的任何类的任何对象,实际将调用的方法取决于对象的类型而不是引用变量的类型
- 利用接口实现多态性:接口名可以用于声明对象引用变量,一个接口引用变量可以指向实现该接口的任何类的任何对象
- 方法的参数可以是多态性的,使得方法所接收对象的参数具有灵活性
- 选择法排序:选择法排序算法通过相继的将各值放在自己的最终位置(排序后的位置)来实现数值的有序排列
- 插入法排序:不断地将新元素插入到已排好序的数列子集中
- 以多态性方式实现的排序算法可对任何一组可比较的对象排序
- 排序算法的比较:如果一种算法执行的比较操作比另一种更多,则前者是效率更低的算法
- 线性搜索:从数列的起点开始,将目标元素依次与每一个值进行比较,最终找到目标元素,或者搜索到数列的终点后发现数列中不存在目标元素
- 二分搜素:从有序数列的中点开始搜索,如果中点元素不是目标元素,则继续搜索
- 多态性允许用一样的方法实现不一样的行为
教材学习中的问题和解决过程
- 问题1:对于Sorting类如何进行升序排列不是很清楚
- 问题1解决方案:在内部循环中
list[scan].compareTo(list[min]) < 0
表示将该值与最小值比较,小于则将该值赋予最小的索引,外层循环将索引值加一,一次次地循环就可以得到升序排列 - 问题2:对于二分搜索找到两个中点值的处理情况不清楚
- 问题2解决方案:课本后来提到
中点计算将忽略小数部分,取两个中点的第一个为新的中点
如1~9的数列要找到7,会在确认5不是目标元素后向6~9的中点搜索,这时中点为7.5,会忽略小数部分,找到目标元素7
代码调试中的问题和解决过程
- 问题1:pp10.1
问题1解决方案:要求使用Payable接口实现多态性,而我只定义了接口,后来发现需要在Staff类中接上才能完成
- 问题2:pp10.4降序排列
问题2解决方案:理解了升序排列是将最小值赋予最小的索引,后来修改了一下就可以将最大值赋予最小的索引获得降序排列
上周考试错题总结
- 错题1及原因,理解情况 Polymorphism is achieved by A . overloading B . overriding C . embedding D . abstraction E . encapsulation 选B,多态性靠重写实现
- 错题2及原因,理解情况 Comparing the amount of memory required by selection sort and insertion sort, what can one say? A . Selection sort requires more additional memory than insertion sort B . Insertion sort requires more additional memory than selection sort C . Both methods require about as much additional memory as the data they are sorting D . Neither method requires additional memory E . None of the above 选D,两种方法都不需要额外内存
- 错题3及原因,理解情况 Can a program exhibit polymorphism if it only implements early binding? A . Yes, because one form of polymorphism is overloading B . No, because without late binding polymorphism cannot be supported C . Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism D . Yes, because early binding has nothing to do with polymorphism E . none of the above 选A,重载也是多态性的一种形式
- 错题4及原因,理解情况 It is possible to sort an array of int, float, double or String, but not an array of an Object class such as a CD class. A . true B . false 选B,这题答题想的是B,应该是手滑选了A,可以对对象数组进行排序
- 错题5及原因,理解情况 A reference variable can refer to any object created from any class related to it by inheritance. A . true B . false 选A,一个引用变量可以指向有继承关系的任何类的任何对象,课本原话
点评模板:
- 博客中值得学习的或问题:
- 对教材内容解析的非常到位
- 代码中值得学习的或问题:
点评过的同学博客和代码
- 本周结对学习情况
- 结对学习内容
- 课本第九章
- 实验2
- 结对学习内容
- 上周博客互评情况
其他(感悟、思考等,可选)
课本简单实验难
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 128/128 | 1/1 | 12/12 | |
第二周 | 212/340 | 1/2 | 18/30 | |
第三周 | 206/546 | 1/3 | 20/50 | |
第四周 | 483/1029 | 2/5 | 40/90 | |
第五周 | 633/1662 | 1/6 | 30/120 | |
第六周 | 560/2222 | 1/7 | 20/140 | |
第七周 | 511/2733 | 1/8 | 20/160 | |
第八周 | 817/3550 | 3/11 | 25/185 |