在哈希方法中,元素保存在哈希表中,元素在表中的位置的位置有哈希函數(hashing function)決定,表中的每一個位置成爲單元(cell)或桶
注意:使用哈希方法使對某個元素的·訪問時間不依賴於表中的元素個數。這意味着對哈希表中一個元素的全部操做都是O(1)。即沒必要非要經過比較才能找到一個具體的元素,或定位所給元素的相應位置。使用哈希方法,只須要計算一個具體的元素應該放在哪裏便可。若是兩個元素或關鍵字映射到表中同一位置的情形稱爲衝突(collision),將每一個元素映射到表中惟一位置的哈希函數稱爲理想哈希函數html
若是知道數據集的大小,則經驗法推知哈希表的大小是數據集的150%。若是不知道數據集的大小,須要動態調整大小時,即建立一個比原表更大的新哈希表,多是原來的兩倍大,將原表中全部元素插入到新表中,而後放棄原表。防止表變滿性能降低,可使用裝載因子(load factor)java
抽取(extraction)是一種哈希函數,僅使用元素值或關鍵字中的一部分來計算保存元素的位置。git
Hashcode(key)=Math.abs(key)%p
2)摺疊方法
將關鍵字的各部分加在一塊兒計算下標。移位摺疊法是將這些各部分相加得下標,邊界摺疊是讓關鍵字的若干子段反轉再相加。算法
3)平方取中方法
 ; ;關鍵字自乘,而後使用抽取方法從平方結果的中部抽取相應的位獲得下標數據庫
4)基數轉化方法
關鍵字轉換爲另外一種數值基數api
5)數字分析方法
抽取關鍵字中的指定位並進行處理從而獲得下標數據結構
6)長度依賴方法
關鍵字和關鍵字的長度以某些方式組合起來,或直接當作下標使用,或再進一步使用其餘方法進行處理而獲得下標。app
7)Java語言中的哈希函數
java.lang.Object定義了方法hashcode,它根據對象在內存中的位置返回一個整數,可是最好仍是爲特定的類定義一個具體的哈希函數。數據庫設計
1)鏈式方法
將哈希表當作幾何的表而不是各獨立單元的表,因此每一個單元保存一個指針,指向於表中該位置相關的元素的集合。利用額外的空間做爲溢出區來保存每一個表位置相對應的鏈表,映射到表中某個位置的首個元素保存到那個位置,映射到該位置的下一個元素也一塊兒保存,以下圖所示。
函數
2)開放地址方法
在表中尋找不一樣於該元素原先哈希到另外一個開放的位置。
總共有三種方法:一是線性探測法,即線性探測空白單元,若是數據放在10這個位置,但10已經滿,就放在11,依次類推下去。二是二次探測方法,二次探測的步數是原始位置相隔的步數的平方。三是雙哈希方法,當基本哈希函數致使衝突時,將使用提供的第2個哈希函數解決問題
此方法博主並非特別理解,附上學習參考博客哈希表之開放地址的三種方法
-2)從開放地址實現刪除元素
7種實現方法:Hashtable、HashMap、HashSet、IdentityHashMap、LinkedHashSet、LinkedHashMap、WeakHashMap
兩種遍歷方式:
1)廣度優先(相似於程序遍歷)
實現方法:經過一個隊列保存遍歷過的頂點順序,以便按出隊順序去訪問這些頂點的鄰接頂點
2)深度遍歷(相似於先序遍歷)
兩種算法:
1):Prim算法:從點入手,適合稠密圖
2): Kruskal算法:從邊入手,適合稀密圖(直接找最小權值邊)。注:兩個節點若同屬於一棵樹,則它們應該有共同的根結點
在數據庫建模的過程當中,須要運用PowerDesigner進行數據庫設計,這個不但可讓人直觀的理解模型,並且能夠充分的利用數據庫技術,優化數據庫的設計。
其次就是E-R圖,在數據庫系統概論中有涉及到,這個實體關係圖中,一個實體對於一個表,實體、屬性與聯繫是進行系統設計時要考慮的三個要素,也是一個好的數據庫設計的核心。
設計參考資料:使用powerDesigner畫ER圖
右圖是根據小組app所畫的初步ER圖
(statistics.sh腳本的運行結果截圖)
錯題暫未給出答案
Few things are impossible in themselves; and it is often for want of will, rather than of means, that man fails to succeed.事情不多有根本作不成的;其因此作不成,與其說是條件不夠,不如說是因爲決心不夠。我就不信了,個人java必定會好的。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 188 | 1/1 | 25 | 算法分析 |
第二週 | 70/258 | 1/2 | 15/40 | 《構建之法》7-9章 |
第三週 | 474/732 | 1/3 | 20/60 | 查找和排序 |
第四五六週 | 1313/2045 | 4/7 | 12/72 | 棧和隊列 |
第七週 | 890/2935 | 1/8 | 14/86 | 樹 |
第八週 | 913/3848 | 1/9 | 20/106 | 二叉查找樹 |
第九周 | 890/3738 | 1/10 | 13/119 | 堆 |
第十週 | 637/4374 | 2/12 | 18/137 | 圖 |
第十一週 | 170/4544 | 1/13 | 15/152 | 哈希方法 |
第十二週 | 、 |
(有空多看看現代軟件工程 課件 軟件工程師能力自我評價表)