哈希方法
哈希算法將任意長度的二進制值映射爲較短的固定長度的二進制值,這個小的二進制值稱爲哈希值。哈希值是一段數據惟一且極其緊湊的數值表示形式。若是散列一段明文並且哪怕只更改該段落的一個字母,隨後的哈希都將產生不一樣的值。要找到散列爲同一個值的兩個不一樣的輸入,在計算上是不可能的,因此數據的哈希值能夠檢驗數據的完整性。通常用於快速查找和加密算法。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中的哈希表數據結構
博客中值得學習的或問題函數
代碼中值得學習的或問題學習
-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小時