動態查詢之雜湊(hash)表
阿新 • • 發佈:2019-01-06
一、介紹
與其他建立在“比較”基礎上的查詢演算法不同,雜湊表是通過雜湊函式將儲存位置與值得關鍵字建立一一對應關係,從而一般一次就能夠得到值。但是有時對於不同關鍵字雜湊後得到的地址會是相同的,稱這種現象為衝突。具有相同雜湊值的關鍵字稱為同義詞。
二、雜湊函式
雜湊函式一般都是儘可能是的關鍵字隨機性較大,出現相同概率小。
直接定址法:根據關鍵詞由雜湊函式直接計算得地址
數字分析法:分析關鍵字規律,儘可能找關鍵字中不相同數字作為雜湊地址
平方取中法:關鍵字平方後取中間幾位作為雜湊地址
摺疊法:將關鍵字分割成相同幾部分,然後取這幾部分的疊加和作為雜湊地址
除留餘數法:取關鍵字不大於雜湊表長度的m的數p除後所得餘數作為雜湊地址
隨機數法:取關鍵字的隨機函式值作為雜湊地址
三、處理衝突
雜湊函式的衝突問題是不能避免的,因此當有衝突時需要一種解決辦法。
開放地址法:
顧名思義,將其他地址開放給雜湊函式儲存
再雜湊法:
連結地址法:
將所有關鍵詞為同義詞的記錄儲存在同一個線性列表中
建立公共溢位區:
同義詞的記錄,一旦發生衝突,填入溢位表
四、查詢長度
裝填因子:
查詢長度: