20172307 2018-2019-1 《程序设计与数据结构》第9周学习总结
教材学习内容总结
- 堆是一棵完全二叉树,其中的每一结点都小于或等于它的两个孩子。
- 最小堆将其最小元素存储在该二叉树的根处,且其根的两个孩子同样也是最小堆。
- addElement方法将给定的Comparable元素添加到堆中的恰当位置处,且维持该堆的完全性属性和有序属性。
- 因为一个堆就是一棵完全树,所以对于插入的新结点而言,只存在一个正确的位置,且它要么是h层左边的一个空位置,要么是h+1层左边的第一个位置(如果h层是满的话)。
- 通常,在堆实现中,我们会对树中的最末一个结点,或更为准确的是,最末一片叶子进行跟踪记录。
- 要维持该树的完全性,那么只有一个能替换根的合法元素,且它是存储在树中最末一片叶子上的元素。
- 虽然最小堆根本就不是一个队列,但是它却提供了一个高效的优先级队列实现。
- 因为我们要求在插入元素后能够向上遍历该树,所以堆中结点必须存储指向其双亲的指针。
- 在二叉树的数组实现中,树的根位于位置0处,对于每一结点n,n的左孩子将位于数组的2n+1位置处,n的右孩子位于数组的2(n+1)位置处。
- 链表实现和数组实现的addElement操作的时间复杂度同为O(logn)。
- 链表实现和数组实现的removeMin操作的复杂度同为O(logn)。
- heapSort方法的两部分构成:添加列表的每一个元素,然后一次删除一个元素。
- 堆排序的复杂度为O(nlogn)。
教材学习中问题和解决过程
问题1:如何创建一个泛型方法
- 问题1解决方案:创建一个泛型方法,需在方法头的返回类型前插入一个泛型声明
例:
public <T> T genericMethod(Class<T> tClass)throws InstantiationException ,
IllegalAccessException{
T instance = tClass.newInstance();
return instance;
}
代码调试中的问题和解决过程

上周考试错题总结
本周没有错题。
结对及互评
- 本周结对学习情况
- 20172311
- 对课本上的诸多疑问点进行了讨论,同时对代码实现过程中遇到的一些问题也通过讨论得以解决。
- 上周博客互评情况
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
|
第一周 |
0/0 |
1/1 |
6/6 |
|
第二周 |
612/612 |
1/2 |
18/24 |
|
第三周 |
516/1128 |
1/3 |
16/40 |
|
第四周 |
702/1830 |
2/5 |
16/56 |
|
第五周 |
1926/3756 |
1/6 |
18/74 |
|
第六周 |
948/4304 |
1/7 |
18/92 |
|
参考资料
20172307 2018-2019-1 《程序设计与数据结构》第9周学习总结
原文:https://www.cnblogs.com/20172307hyt/p/9979701.html