# 20162308 2017-2018-2 《程序设计与数据结构》第九周学习总结
2017-11-05 23:14
519 查看
20162308 2017-2018-2 《程序设计与数据结构》第九周学习总结
教材学习内容总结
学习目标
理解堆和优先队列理解堆和优先队列的关系
掌握堆的实现
掌握堆排序的实现
分析Java Collections API中堆和相关的类
学习内容
堆
** 堆 ** 是具有以下性质的二叉树:(1)它是一棵完全二叉树(即树上所有节点都是满的,除了最后一层的节点外,且最后一层的叶子节点都是尽可能靠左的);
(2)父节点的键值总是和任何一个子节点的键值保持固定的大小关系,且每个节点的左子树和右子树都是一个二叉堆。
当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆;当父节点的键值总是小于等于任何一个子节点的键值时为最小堆。二叉堆可应用于堆排序、优先级队列、图算法等。
二叉堆通常用数组来表示,如果树根节点为 arr[0],那么有以下性质:
(1)arr[i/2] 为第 i 个节点的父节点;
(2)arr[2*i + 1] 为第 i 个节点的左孩子节点;
(3)arr[2*i + 2] 为第 i 个节点的右孩子节点。
优先队列
在多任务环境中,操作系统必须决定在若干进程中运行哪个进程。我们知道,有一些任务应当具有优先权,对这些特殊的应用似乎需要一类特殊的队列,称之为优先队列(priority queue)。优先队列的实现如下:
链表,插入队头O(1), 删除最小的元素则需要遍历链表O(n) 另一个方法是让链表保持在排序的状态,这使得插入代价O(n),而deleteMin只需要O(1)
BST:二叉查找树 对于两种操作平均时间都是O(logN),但可能导致树的不平衡,用平衡树又显得过于麻烦
故优先队列使用二叉堆(binary heap)来实现。
代码调试中的问题和解决过程
代码托管
代码提交过程 & 代码量截图:结对及互评
点评模板:
博客中值得学习的或问题:其他
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | - | 1 | 10 | |
第二周 | - | 2 | 20 | |
第三周 | - | 3 | 30 | |
第四周 | - | 4 | 40 | |
第五周 | - | 5 | 50 |
实际学习时间:10小时
改进情况:
参考资料
《Java程序设计与数据结构教程(第二版)》《Java程序设计与数据结构教程(第二版)》学习指导
https://www.hrwhisper.me/algorithm-heap-priority-queue/
相关文章推荐
- 20162304 2017-2018-1 《程序设计与数据结构》第九周学习总结
- 20162308 2017-2018-2 《程序设计与数据结构》第二周学习总结
- 20162308 2017-2018-2 《程序设计与数据结构》第十周学习总结
- 20162311 2017-2018-1 《程序设计与数据结构》第九周学习总结
- 20162308 2017-2018-2 《程序设计与数据结构》第11周学习总结
- 20162329 2017-2018-1 《程序设计与数据结构》第九周学习总结
- 20162308 2017-2018-2 《程序设计与数据结构》第六周学习总结
- 20162308 2017-2018-1 《程序设计与数据结构》第一周学习总结
- 20162308 2017-2018-2 《程序设计与数据结构》第七周学习总结
- 20162330 2017-2018-1《程序设计与数据结构》第九周学习总结
- 20162324 2017-2018-1 《程序设计与数据结构》第8周学习总结
- 20162308 2016-2017-2 《程序设计与数据结构》第4周学习总结
- 20162321王彪 2017-2018-1 《程序设计与数据结构》第三周学习总结
- 20162326 2017-2018-1 《程序设计与数据结构》第3周学习总结
- 20162315 2017-2018-1 《程序设计与数据结构》第3周学习总结
- 20162307 2017-2018-1 《程序设计与数据结构》第11周学习总结
- 2017-2018-1 学号20155209 《信息安全系统设计基础》第九周学习总结
- 20162324 2017-2018-1 《程序设计与数据结构》第2周学习总结
- 20162326 2017-2018-1 《程序设计与数据结构》第5周学习总结
- 20162307 2017-2018-1 《程序设计与数据结构》第1周学习总结