對映在數學上相當於乙個函式f(x):a->b。雜湊表的核心是乙個雜湊函式(hash function),這個函式規定了集合a中的元素如何對應到集合b中的元素。
根據設定的雜湊函式
h(key)
和處理衝突的方法
,將一組關鍵字映像到乙個有限的連續的位址集(區間) 上,並以關鍵字在位址集中的「像」作為相應記錄在表中的儲存位置
,如此構造所得的查詢表稱之為雜湊表。
這一映像過程稱為雜湊造表或雜湊,所得儲存位置稱雜湊位址或雜湊位址。
1.直接定址法
此法僅適合於:
位址集合的大小 = =關鍵字集合的大小, 對於不同的關鍵字不會發生衝突
2.數字分析法
若關鍵字集合中的每個關鍵字都是由 s 位數字組成 (d1, d2, …, ds),則可對全體關鍵字進行分析,從中提取分布均勻的若干位或它們的組合作為位址。
• 此方法適合於:關鍵字較長且能預先估計出全體關鍵字的每一位上各種數字出現的頻度。如:身份證號碼、手機號碼等。
3.平方取中法
以關鍵字平方值的中間幾位作為儲存位址。求關鍵字的平方值是為了「擴大差別」,同時平方值的中間幾位又能受到關鍵字中各位的影響。
此方法適合於:關鍵字中的每一位都有某些數字出現頻度很高且關鍵字位數不多。
4.摺疊法
將關鍵字按雜湊位址的位數分割成若干部分,然後取這幾部分的疊加和作為雜湊位址。
• 此方法適合於:關鍵字的數字位數特別多。
5.除留餘數法
設定雜湊函式為: h(key) = key mod p ;其中,p 應取不大於表長m的最大素數
雜湊位址的範圍是0 ~ p-1
6.隨機數法
設定雜湊函式為: h(key) = random(key) 其中,random 為偽隨機函式。
通常,此方法用於對長度不等的關鍵字構造雜湊函式。
「處理衝突」 的實際含義是:
,即為發生衝突的關鍵字(同義詞)安排儲存位置,並為以後查詢提供有效方法。1.
開放定址法
2.鏈位址法
將所有雜湊位址相同的關鍵字(同義詞)儲存在同乙個線性鍊錶中,該線性鍊錶通常按關鍵字遞增有序。所有線性鍊錶的頭指標儲存在乙個指標型一維陣列中。
3.公共溢位區法
每個雜湊位址的第乙個記錄存入基本表,而同義詞存入溢位表。
查詢時,先根據雜湊位址在基本表中查詢,一旦發生衝突,則需要在溢位表中順序查詢。
資料結構與演算法 雜湊表
雜湊表也叫雜湊表,hash表是一種根據關鍵字值 key value 而直接進行訪問的資料結構。是把記錄的儲存位置和記錄的關鍵字之間建立對應關係的一種儲存結構。雜湊表又叫 雜湊表,速度很快,最常用的一種儲存機構是順序表 鍊錶的結構 主結構是順序表,每個順序表中的元素又對應一張鍊錶。雜湊表的常用資料結構...
資料結構與演算法 雜湊表
雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。如下圖,定義了16個陣列,每個陣列用來存放一條鍊錶.在插入資料時,首先...
資料結構與演算法 雜湊函式與雜湊表
1.雜湊函式的特點 1 理論上輸入域是無窮大的,輸出域是固定的。2 雜湊一般是16位的,每一位是0 9 a f 的隨機數所以一共16的16次方種也就是2 64種 3 雜湊函式輸出的值會均勻分布。比如說輸入域是0 98,輸出域是0 2,我們輸入99個數字,那麼所有輸入的值 3後,0 1 2後面基本都有...