20162302 《程序设计与数据结构》第九周学习总结

20162302 2017-2018-1 《程序设计与数据结构》第九周学习总结

教材学习内容总结

理解堆和优先队列
理解堆和优先队列的关系
掌握堆的实现
掌握堆排序的实现
分析Java Collections API中堆和相关的类

教材学习中的问题和解决过程

  • 问题:什么是优先队列

优先队列(priority queue)是一种服从两个有序规律的集合。首先,具有更高优先级的项排在前面。其次,具有相同优先级的项按先进先出的规则排序。注意,优先队列不是典型的FIFO队列。FIFO的规则只能用来处理具有相同优先级的项。(教材410页)
在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出(largest-in,first-out)的行为特征。(优先队列

代码调试中的问题和解决过程

  • 问题1:如何实现`LinkedMaxHeap'中的'getMax()'方法
  • 解决方案:首先看课本上的removeMax()方法,可以看出再删除的时候直接删除了根部的元素。所以可以猜测根部的元素为最大值。

    然后观察add()方法,在最后调用了 heapifyAdd()方法

    这个方法对于新形成的树做出调整,使其变成堆

代码托管

结对及互评

  • 博客中值得学习的或问题:
    • 叙述的问题很清晰,讲解很仔细
    • 结构清晰

本周结对学习情况

  • 20162329

  • 结对学习内容:
    没有进行系统的结对学习

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 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

参考资料

posted @ 2017-11-05 18:23  20162302  阅读(141)  评论(0编辑  收藏  举报