20162313苑洪铭 2017-2018-1 《程序设计与数据结构》第9周学习总结
20162313苑洪铭 2017-2018-1 《程序设计与数据结构》第9周学习总结
教材学习内容总结
堆是一棵完全二叉树,其中每个元素都要大于或小于他的所有孩子,更准确的说我们定义的是最大堆。
堆还可以是最小堆,其中每个元素都小于等于他的孩子。
向堆中添加一个元素:向堆中插入一个元素时,首先将该元素写入到堆尾,即堆中最后一个元素的后面,然后经调整为一个新堆。若新元素大于双亲结点的值,就让它们互换位置。新元素换到双亲位置后,使得以该位置为根的子树成为堆,这样持续传递上去,直到以新位置的双亲结点为根的子树仍为一个堆或者调整到堆顶为止,此时得到的整个树又成为了一个堆。
从堆中删除一个元素:利用最后的叶结点取代根,然后将其向下移动到合适的位置。
堆排序:先将一组元素一项项地插入到堆中,然后一次删除一个,因为最大元素,最先从堆中删除,从堆中得到的元素序列将是有序数列,而且是降序的。
优先队列:是一个服从两个有序规则的集合,首先,具有更高优先级的项排在前面,其次,具有相同优先级的项按照先进先出的规则排列。但是优先数列不是FIFO队列,它是根据优先级排序元素,不是根据他们进入队列的次序来排序。
教材学习中的问题和解决过程
- 问题1:对于优先队列还有不解
- 问题1解决方案:优先队列其实内部实现就是一个堆的数据结构,java默认的是一个小跟堆,每次取出最小的元素,因为堆的性质他可以做到O(logn)级别的插入和删除操作。Java util包中的PriorityQueue类用来表示优先队列。优先队列是一个以集合为基础的抽象数据类型,队列中的每个元素都有一个优先级值。优先级值用来表示该元素的出列的优先级。
代码托管
上周考试错题总结
- 错题1:Which of the following best describes a balanced tree?
- A .
A balanced trees has all nodes at exactly the same level. - B .
A balanced tree has no nodes at exactly the same level. - C .
A balanced tree has half of the nodes at one level and half the nodes at another level. - D .
A balanced tree has all of the nodes within one level of each other. - E .
none of the above correctly describe a balanced tree.
正确答案: D
尽管所有节点在完全相同水平的树是平衡的,但并不是所有的平衡树都具有这个属性。 所以选择A并不是最好的答案。选项d是最好的答案,因为它正确地定义了一棵平衡树。 - 错题2:
The height of a tree and the depth of a tree are different. - A .
true - B .
false
正确答案: B
高度和深度是树的上下文中的同义词。 - 错题3:
In a full tree, all leaves are at the same level. - A .
true - B .
false
正确答案: A
一棵完整的树被定义为一棵树,其中所有的树叶都在同一层次上,而每一个非叶子节点恰好有n个子树。 - 错题4:
In a postorder traversal, the root is the last element visited in the tree. - A .
true - B .
false
正确答案: B
后序遍历访问右侧子树,然后访问左侧子树,然后访问根。 所以,根始终是最后一个被访问的元素。
结对及互评
-
博客中值得学习的或问题
-
代码中值得学习的或问题
本周结对学习情况
-20162309
- 结对学习内容
- 课本第18章
- 老师提供在蓝墨云班课的PPT
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 11/11 | |
第三周 | 387/387 | 2/3 | 14/25 | |
第五周 | 1232/1619 | 3/6 | 13/38 | |
第七周 | 454/2073 | 4/7 | 11/49 | |
第九周 | 526/2599 | 2/9 | 10/59 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:14小时
-
实际学习时间:10小时