《程序设计与数据结构》第9周学习总结
教材学习内容总结
- 堆和优先队列。
- 向堆中添加一个元素
- 堆的实现
- 堆排序
教材学习中的问题和解决过程
- 问题1:堆和二叉排序树的差别在哪?
- 问题1解决方案:这是一个课上问题,我当时的答案是:
- 二叉排序树若左子树不为空则左子树中的元素小于根的元素,反之右子树不为空右子树中的元素大于根。
而堆的根是元素中的最大值。
二叉排序树不是完全二叉树,堆是完全二叉树。 - 但我后来在活动结束后参考了一下张之睿同学(20162311)的答案:
- 堆是一颗完全二叉树,二叉排序树不一定是;二叉排序树的左孩子<父亲<右孩子或者左孩子>父亲>右孩子,堆是父亲>子结点或者父亲<子结点;添加元素的方法不一样,堆是先将这个元素添加为叶节点,然后向上移动到合适位置,而二叉排序树是通过比较来插入元素
- 我当初疏忽了一点:堆有最大堆和最小堆的情况,而且我没有说出二叉排序树和堆添加元素有何不同。
代码调试中的问题和解决过程
- 问题1:如何实现PP18.1
- 问题1解决方案:首先我们得明白getMax这个方法如何使用,伪代码怎么搞。
- getMax就是获取堆中最大值的代码
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
本周结对学习情况
- [20162330](http://www.cnblogs.com/super925/)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 300/1600 | 4/13 | 25/120 | |
第六周 | 300/1900 | 1/14 | 20/140 | |
第七周 | 300/2200 | 3/17 | 20/160 | |
第八周 | 100/2300 | 2/19 | 15/175 | |
第九周 | 100/2300 | 1/20 | 10/185 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:15小时
-
实际学习时间:10小时
-
改进情况:图书馆学习Ing
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)