資料結構 雜湊簡介

2021-08-20 08:46:39 字數 973 閱讀 9296

我們在前面提過的順序搜尋和二叉搜尋樹中,元素儲存位置和元素各關鍵碼之間沒有對應關係,因此在查詢乙個元素時,必須要經過關鍵碼的多次比較。搜尋的效率取決於搜尋過程中元素的比較次數。

因此我們就在想,有沒有一種理想的搜尋方法,可以不經過任何的比較,一次直接從表中得到要搜尋的元素。

通過構造一種儲存結構,用某種函式使得元素的儲存位置和他的關鍵碼之間能夠一一對應起來,那麼在查詢時可以通過該函式快速地找到該元素。

所以,我們引入了雜湊方法:

當向該結構中:

·插入元素時:根據待插入元素的關鍵碼,以此函式計算出該元素的儲存位置並按此位置進行存放

·搜尋元素時:對元素的關鍵碼進行同樣的計算,把求得的函式值當做元素的儲存位置,在結構中按此位置去和元素進行比較,若關鍵碼相同,則搜尋成功。

這種方法就稱為雜湊方法,用來轉換的的函式稱為雜湊函式,儲存元素的結構稱為雜湊表。

例如:現在有一組資料:,我們該如何儲存呢?

如下圖所示:

根據雜湊函式算出每個key所對應的雜湊位址,然後經該元素存到這個雜湊位址對應的空間中。

但是如果我們用上面的辦法再去向集合裡插入元素26時,會有什麼現象呢?

26 % 10 = 6

由雜湊函式我們算出該新元素的雜湊位址即陣列下標為 6,但是下標為 6 的這個位置已經被456佔了,那這個新元素該往哪插?

上面這種情況就是雜湊衝突。

當不同的關鍵字通過雜湊函式計算得出相同的雜湊位址,這種現象稱為雜湊衝突或雜湊碰撞。

發生了雜湊衝突該如何處理呢?

下篇部落格會著重來說明如何處理雜湊衝突。

資料結構 雜湊

裝填因子 key的個數與表長的比值。雜湊表查詢成功的平均查詢長度,查詢失敗的平均查詢長度都是期望,期望怎麼求,平均查詢長度就怎麼求。雜湊表這裡有兩種實現方式 線性開型定址雜湊,鍊錶雜湊。1.線性開型定址雜湊 陣列實現,資料個數不大於表長,放乙個元素時,若發生衝突,則順次線性掃瞄直到找到乙個空位。2....

資料結構 雜湊

關鍵 不比較關鍵碼,直接搜尋得到需要的數。特點 與搜尋樹不一樣,雜湊結構元素的儲存位置與關鍵碼直接對應,可以不用進行比較遍歷。如圖,建立乙個陣列,把a 4 中的資料按特定的規則儲存到相應的位置,比如a i n,到時候搜尋資料的時候可以按照同樣的規律直接找到這個位置,如果這個位置有數,則存在。比如按照...

資料結構 雜湊

將元素的儲存位置和該元素的關鍵碼通過某種函式建立一一對應的關係,構造出來的儲存結構稱之為雜湊表,轉換時借助的函式稱之為雜湊函式,在理想情況下,根據關鍵碼搜尋元素時可以不經過任何比較,一次性從表中查詢到所要搜尋的元素 但是在通過雜湊函式進行元素儲存位置確立的時候會出現,不同元素的關鍵碼通過雜湊函式計算...