資料結構 雜湊表

2022-08-09 01:15:21 字數 1412 閱讀 1045

雜湊表

1. 雜湊表的引入

1.1 雜湊表的簡單概述

雜湊表乙個通過雜湊函式來計算資料儲存位置的資料結構,通常支援如下操作 (高效的操作):python中的字典是通過雜湊表實現的

1.2.直接定址表

當關鍵字的key 的 全域u(關鍵字可能出現的範圍)比較小時,直接定址是一種簡單而有效的方法

直接定址技術缺點:

2. 雜湊與雜湊表

2.1 改進直接定址表: 雜湊

2.2 雜湊表

2.2.1簡單的hash函式

2.2儲存機制

以除法雜湊為例討論下儲存機制以及存在的問題

假設有乙個長度為7的陣列,雜湊函式h(k)=k mod 7,元素集合的儲存方式如下圖。

解釋:3.雜湊衝突 &解決方法

3.1 雜湊衝突

由於雜湊表的大小是有限的,而要儲存的值的總數量是無限的,因此對於任何雜湊函式,都會出現兩個不同元素對映到同乙個位置上的情況,這種情況叫做雜湊衝突。

3.2 解決雜湊衝突

3.2.1開放定址法

如果雜湊函式返回的位置已經有值,則可以向後探查新的位置來儲存這個值。

保證有空位儲存  - > 動態擴張

同樣裝載率因子  a = n / m  a超過閾值是,將雜湊表擴張一倍,重新計算雜湊函式值,將值重新進行儲存 

查詢:線性探查的問題 : 會導致大量的空格,大量的值連在一起,導致查詢的時候變慢 ,當值分散開較好

為了解決上述問題,使用二次探查的方法 

3.2.2拉鍊法

雜湊表每個位置都連線乙個鍊錶,當衝突發生時,衝突的元素將被加到該位置鍊錶的最後

當乙個位置後邊的鍊錶太長,再查詢的時候會很慢

同樣 拉鍊法也需要在裝載率因子超過閾值的時候動態擴張  (但是他可以大於1)

注: 由於key必須通過hash函式計算出乙個整數,因此必須是不可變的資料型別

資料結構 雜湊表

1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...

資料結構 雜湊表

雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...

資料結構 雜湊表

3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...