第八周作业
20182313 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结
教材学习内容总结
- 查找
- 线性查找法:从头开始依次比较每一个值,直到找到目标元素,或者得出不存在该目标值的结论,这种方式称为线性查找(linear search)
- 二分查找(折半查找):当查找池中的项目组是已排序的,那么利用二分查找将会更有效率。
- 二分查找的思路: 二分查找从排序列表的中间开始查找,如果中间元素不是目标元素,根据两个元素的大小关系,再判断从列表的前一半或是后一般进行查找。每次的查找都是从当前一串数字的中间元素开始的。直到最后找到该元素或是没有找到抛出一个信息。
- 二分查找的每次比较都会删除一半的可行候选项,当查找池中有偶数个待查找值时,选择的是两个中间值的第一个。
- 二分查找的复杂度是对数级的,这使得它对于大型查找池非常有效率。线性查找具有线性时间复杂度O(n),二分查找具有时间复杂度O(log2n)。
- 排序
- 选择排序法:反复寻找当前列表的最小值,然后将其放在列表的前端。
- 插入排序法:将数字插入前端已排序的列表的合适位置直至排序完成。
- 冒泡排序法:反复比较相邻元素的大小关系进行移位操作直至排序完成
- 快速排序法:选择一个列表元素进行分区元素,然后对两个分区进行递归排序直至排序完成(一个分区只含有一个元素)。
排序时两个分区同时进行查找,一旦两边都找到一个元素,将两者进行互换
教材学习中的问题和解决过程
- 问题一:对静态变量里的一个实例变量存在一些疑惑
- 问题一解决过程:实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部,但在类的其他成员方法之外声明的。类的每个对象维护它自己的一份实例变量的副本。
- 问题二:排序法之间时间和空间复杂度的差异,上课时只是记住了这个概念的存在,不理解具体含义
- 问题二解决过程:
代码调试过程中的问题和解决过程
- 问题一:在运行listlinked时报错,无法进行正常操作
- 问题一解决过程:经过检查之后发现是因为addtorear那个位置是空的,所以无法插入。原因出在addtofront方法里,没有考虑没有插入元素时列表是空的,除了定义head=node之外,还需要定义rear=node
代码托管
上周考试课题总结
上周无考试
结对及互评
- 基于评分标准,我给本博客打分:15分 得分情况如下:
1.正确使用Markdown语法(加1分)
2.模板中的要素齐全(加1分)
3.教材学习中的问题和解决过程(加2分)
4.代码调试中的问题和解决过程(加3分)
5.感想,体会不假大空(加1分)
6.排版精美(加1分)
7.进度条中记录学习时间与改进情况(加1分)
8.有动手写新代码(加1分)
9.错题学习深入(加1分)
10.点评认真,能指出博客和代码中的问题(加1分)
11.结对学习情况真实可信(加1分)
12.本周有效代码超过300分行(加2分)
点评过的同学博客和代码
- 本周结对学习情况
20182306
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 171/171 | 2/2 | 20/20 | |
第二三周 | 415/586 | 3/5 | 42/62 | |
第四周 | 587/1173 | 2/7 | 22/84 | |
第五周 | 1706/2879 | 2/9 | 19/103 | |
第六周 | 1706/2879 | 2/9 | 19/103 | |
第七周 | 3969/6848 | 2/11 | 21/124 | |
第八周 | 1217/8065 | 2/13 | 24/148 |