20172307 2018-2019-1 《程序設計與數據結構》第9周學習總結
阿新 • • 發佈:2018-11-19
插入元素 替換 小堆 列表 代碼調試 text 二叉樹 add 置0
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;
}
代碼調試中的問題和解決過程
- 問題1:
- 問題1解決方案:
代碼托管
上周考試錯題總結
本周沒有錯題。
結對及互評
- 本周結對學習情況
- 20172311
- 對課本上的諸多疑問點進行了討論,同時對代碼實現過程中遇到的一些問題也通過討論得以解決。
- 上周博客互評情況
- 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 |
參考資料
《java 泛型詳解-絕對是對泛型方法講解最詳細的,沒有之一》
《Java程序設計與數據結構教程(第二版)》
《Java程序設計與數據結構教程(第二版)》學習指導
20172307 2018-2019-1 《程序設計與數據結構》第9周學習總結