20162302 《程序设计与数据结构》第九周学习总结
20162302 2017-2018-1 《程序设计与数据结构》第九周学习总结
教材学习内容总结
理解堆和优先队列
理解堆和优先队列的关系
掌握堆的实现
掌握堆排序的实现
分析Java Collections API中堆和相关的类
教材学习中的问题和解决过程
-
问题:什么是优先队列
优先队列(priority queue)是一种服从两个有序规律的集合。首先,具有更高优先级的项排在前面。其次,具有相同优先级的项按先进先出的规则排序。注意,优先队列不是典型的FIFO队列。FIFO的规则只能用来处理具有相同优先级的项。(教材410页)
在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出(largest-in,first-out)的行为特征。(优先队列)
代码调试中的问题和解决过程
- 问题1:如何实现`LinkedMaxHeap'中的'getMax()'方法
- 解决方案:首先看课本上的
removeMax()
方法,可以看出再删除的时候直接删除了根部的元素。所以可以猜测根部的元素为最大值。
然后观察add()
方法,在最后调用了heapifyAdd()
方法
这个方法对于新形成的树做出调整,使其变成堆
代码托管
结对及互评
- 博客中值得学习的或问题:
- 叙述的问题很清晰,讲解很仔细
- 结构清晰
本周结对学习情况
-
结对学习内容:
没有进行系统的结对学习
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | ??/?? | 1/2 | 15/25 | |
第三周 | 465/465 | 1/3 | 15/40 | |
第五&六周 | 443/908 | 3/7 | 40/80 | |
第七周 | 528/1436 | 2/9 | 20/100 | |
第八周 | 881/2317 | 2/11 | 15/115 | |
第九周 | 936/3253 | 2/13 | 20/135 |