20162313苑洪銘 2017-2018-1 《程序設計與數據結構》第11周學習總結

20162313苑洪銘 2017-2018-1 《程序設計與數據結構》第11周學習總結

教材學習內容總結

哈希方法
哈希算法將任意長度的二進制值映射爲較短的固定長度的二進制值,這個小的二進制值稱爲哈希值。哈希值是一段數據惟一且極其緊湊的數值表示形式。若是散列一段明文並且哪怕只更改該段落的一個字母,隨後的哈希都將產生不一樣的值。要找到散列爲同一個值的兩個不一樣的輸入,在計算上是不可能的,因此數據的哈希值能夠檢驗數據的完整性。通常用於快速查找和加密算法。html

哈希函數
哈希表中元素是由哈希函數肯定的。將數據元素的關鍵字K做爲自變量,經過必定的函數關係(稱爲哈希函數),計算出的值,即爲該元素的存儲地址。表示爲:
Addr = H(key)
方法分爲除法算法、摺疊算法、平方取中方法、基數轉換方法、數字分析方法、長度依賴方法。git

解決衝突
鏈式方法:拉出一個動態鏈表代替靜態順序存儲結構,能夠避免哈希函數的衝突,不過缺點就是鏈表的設計過於麻煩,增長了編程複雜度。此法能夠徹底避免哈希函數的衝突。
開放地址方法:開放地址法有一個公式:Hi=(H(key)+di) MOD m i=1,2,...,k(k<=m-1)其中,m爲哈希表的表長。di是產生衝突的時候的增量序列。若是di值可能爲1,2,3,...m-1,稱線性探測再散列。若是di取1,則每次衝突以後,向後移動1個位置.若是di取值可能爲1,-1,4,-4,9,-9,16,-16,...kk,-kk(k<=m/2)稱二次探測再散列。若是di取值可能爲僞隨機數列。稱僞隨機探測再散列。算法

從哈希表中刪除元素
從鏈表刪除、從開放地址實現中刪除編程

Java Collection API中的哈希表數據結構

教材學習中的問題和解決過程

  • 問題1:哈希與二叉樹何時用的問題
  • 問題1解決方案:哈希表:哈希表查找速度比較快,可是要耗比較多的內存。因此比較適用於對查找速度要求比較高、且內存空間足夠的時候 平衡二叉樹:若是想在之後用二分法查找的時候查找速度比較快的話用創建平衡二叉樹的方法

代碼託管

結對及互評

  • 博客中值得學習的或問題函數

  • 代碼中值得學習的或問題學習

本週結對學習狀況

-20162309
- 結對學習內容
- 課本第20章
- 老師提供在藍墨雲班課的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就接近了。設計

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法htm

  • 計劃學習時間:14小時

  • 實際學習時間:10小時

參考資料

相關文章
相關標籤/搜索