哈希表不可避免衝突(collision)現象:對不同的關鍵字可能得到同一哈希地址 即key1≠key2,而f(key1)=f(key2)。具有相同函數值的關鍵字對該哈希函數來說稱爲同義詞(synonym)。 因此,在建造哈希表時不僅要設定一個好的哈希函數,而且要設定一種處理衝突的方法。可如下描述哈希表:根據設定的哈希函數H(key)和所選中的處理衝突的方法,將一組關鍵字映象到一個有限的、地址連續的地址集(區間)上並以關鍵字在地址集中的“象”作爲相應記錄在表中的存儲位置,這種表被稱爲哈希表。
注:這個函數f(key)爲哈希函數。(注意:這個函數並不一定是數學函數) 哈希函數是一個映象,即:將關鍵字的集合映射到某個地址集合上,它的設置很靈活,只要這個地址集合的大小不超出允許範圍即可。 現實中哈希函數是需要構造的,並且構造的好才能使用的好。 這個函數f(key)爲哈希函數。(注意:這個函數並不一定是數學函數) 哈希函數是一個映象,即:將關鍵字的集合映射到某個地址集合上,它的設置很靈
對於動態查找表而言,1) 表長不確定;2)在設計查找表時,只知道關鍵字所屬範圍,而不知道確切的關鍵字。因此,一般情況需建立一個函數關係,以f(key)作爲關鍵字爲key的錄在表中的位置,通常稱這個函數f(key)爲哈希函數。(注意:這個函數並不一定是數學函數)
哈希函數是一個映象,即:將關鍵字的集合映射到某個地址集合上,它的設置很靈活,只要這個地址集合的大小不超出允許範圍即可。
現實中哈希函數是需要構造的,並且構造的好才能使用的好。
用途:加密,解決衝突問題。。。。
用途很廣,比特精靈中就使用了哈希函數,你可 以自己看看。
具體可以學習一下數據結構和算法的書。