20172322 2017-2018-2 《程序设计与数据结构》第八周学习总结
20172322 2017-2018-2 《程序设计与数据结构》第八周学习总结
教材学习内容总结
- 本周学习了分别利用接口和继承实现多态性。
- 继承实现多态性,例如Mammal类是Horse类的父类,则一个Mammal对象可以指向任何一个Horse类的对象,例如以下代码
Mammal pet;
Horse secretariat = new Horse();
pet = secretariat;
```
- 接口实现多态性,例如声明一个接口Speaker:
public interface Speaker
{
public void speak();
public void announce(String str);
}
```
引用变量current可以指向实现Speaker接口的任何类的任何对象。
- 学会了插入法排序和选择法排序。
- 选择法排序的基本方法是扫描整个数列找到最小值,将最小值与第一个位置的元素交换位置后再次扫描除第一个元素外的其他元素,找到最小值后与第二个值交换,以此往复,直到排序完成。
- 例题:
3 1 9 3 6 2 10
1 3 9 3 6 2 10
1 2 3 9 6 3 10
1 2 3 3 6 9 10 - 插入法排序是第一个数仅自己后面的一个数字相比较,如果小于后面的数则不动,大于则交换位置,比较完成后与前两个数和第三个数对比,按照之前的原理放置位置。
- 例题:
3 1 9 3 6 2 10
1 3 9 3 6 2 10
1 3 9 3 6 2 10
1 3 3 9 6 2 10
1 3 3 6 9 2 10
1 2 3 3 6 9 10
- 选择法排序的基本方法是扫描整个数列找到最小值,将最小值与第一个位置的元素交换位置后再次扫描除第一个元素外的其他元素,找到最小值后与第二个值交换,以此往复,直到排序完成。
教材学习中的问题和解决过程
- 本周教材学习问题不多。
- 问题1:在刚开始学习插入排序法时,误以为当一个数符合其规则时不算一个步骤,会直接跳过。
- 问题1解决方案:经过王老师在课上的讲解发现就算它符合其排序规则,也算作一步,已经扫描。
代码调试中的问题和解决过程
- 问题1:在做作业PP10.5时遇到一个问题,在分析题目的要求过后我开始只是简单的认为直接修改Movies类就可以了,产生了一些无法实现排序的错误。
- 问题1解决方案:仔细再次读了书上的Contact类与DVD类作对比,发现了DVD类并没有compareTo接口,之后就照着书上的Contact类写了接口。
代码托管
上周考试错题总结
-
错题1及原因:没有认真看书,几乎书上原话
-
理解情况:虽然书上的原话是这样,但是我还是有问题,为什么效率都是N2呢?按照他们的算法他们的操作次数应该比N2小应该是N!,效率应该比N^2高吧。还有n log (n)这个效率又是如何得到的。
结对及互评
- 博客中值得学习的或问题:
- 在写出学习了插入排序法和选择排序法后放上了例题,这一点我觉得十分不错,我也修改了自己的博客也放上了相应的例题,使得后来者看博客时可以清晰明了的了解两种排序法的排序方式。
- 代码中值得学习的或问题:
- 使用了import调用第六周的DVDcollection代码,使得不用再复制粘贴一次,比较方便
点评过的同学博客和代码
- 本周结对学习情况
-
结对学习内容
- 在范雯琪同学做PP10.4遇到困难时向她提供思路引导,使得问题变得十分简单
其他
- 感悟:本周的主要时间都花到四则运算项目上去了,还好本周的书上内容不难,学习起来难度不大,但是本周也是第一次体会到了编一个项目的难度。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 242/242 | 1/4 | 13/13 | 增加了对Java的兴趣 |
第二周 | 297/539 | 1/5 | 15/28 | 发现目标并没有想象中那么难 |
第三周 | 315/854 | 2/7 | 18/46 | 突然发觉JAVA的难度不小 |
第四周 | 1269/2123 | 1/8 | 50/96 | Java难到哭,但是有信心击败他! |
第五周 | 737/2860 | 1/9 | 30/126 | 难度的减小激发了学习动力 |
第六周 | 542/3402 | 2/11 | 20/146 | 不能说难度变小!!!又难了T T |
第七周 | 956/4357 | 1/12 | 35/181 | 平平淡淡才是真 |
第八周 | 2448/6805 | 3/15 | 80/261 | 四则运算花的时间太多了,还好书上例题的代码老师给了 |
-
计划学习时间:40小时
-
实际学习时间:80小时
-
改进情况:根据学长对上周博客的建议修改了上周博客,并在本周博客中尽量避免类似问题发生