天天看點

【資料結構】哈希表 Hash Table1. Hash Table的定義2. 哈希函數的構造方法3. 處理沖突的方法Hash Table的特點及引用

1. Hash Table的定義

線上性表,樹等資料結構中,記錄在結構中的相對位置是随機的,和記錄的關鍵字之間不存在确定的關系,是以,在結構中查找記錄時需要進行一系列和關鍵字的比較。查找的效率依賴于查找過程中所進行的比較次數。

理想的情況是希望不經過任何比較,一次存取便能得到所查記錄,那就必須在記錄的存儲位置和它的關鍵字之間建立一個确定的對應關系f,使每個關鍵字和結構中一個唯一的存儲位置相對應。因而在查找時,隻要根據這個對應關系f找到給定值K的像f(K)。若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上,由此,不需要進行比較便可以直接取得所查記錄.這個對應關系f為哈希(Hash)函數.

哈希函數是一個映像,隻要使得任何關鍵字由此所得的的哈希函數值都落在表長允許範圍之内即可.

另外,對于不同的關鍵字可能得到同一個哈希位址,這種現象稱為沖突.一般情況下,沖突隻能盡可能地少,而不能完全避免.是以,在建立哈希表時不僅要設定一個好的哈希函數,而且要設定一種處理沖突的方法.

根據設定的哈希函數H(key)和處理沖突的方法将一組關鍵字映像到一個有限的連續的位址集(區間)上,并以關鍵字在位址集中的"像"作為記錄在表中的存儲位置,這種表便成為哈希表,這一映像過程成為散列,所得存儲位置稱為哈希位址或散列位址。

【資料結構】哈希表 Hash Table1. Hash Table的定義2. 哈希函數的構造方法3. 處理沖突的方法Hash Table的特點及引用

2. 哈希函數的構造方法

3. 處理沖突的方法

3.1. 鍊位址法

将關鍵字為同義詞的記錄存儲在同一個線性連結清單中,

【資料結構】哈希表 Hash Table1. Hash Table的定義2. 哈希函數的構造方法3. 處理沖突的方法Hash Table的特點及引用

Hash Table的特點及引用

Hash Table是一種高效的資料結構,其高效主要展現在把資料的存儲和查找的時間大大降低,幾乎可以看成是常數時間,而代價是消耗較多的記憶體。

  • 統計值出現的次數/頻率

繼續閱讀