hash表學習筆記

2022-10-10 16:00:15 字數 1894 閱讀 9235

一、hash表的基本概念和優缺點比較

hash表又稱雜湊表 ,是一種資料結構,與鍊錶、二叉樹有很大區別。

1、hash表優缺點

優點:能夠在常數級的時間複雜度上進行查詢,並且插入資料和刪除資料簡單。(hash未滿的時候速度很快)

2、與鍊錶比較

鍊錶:查詢上表中的資料從頭開始遍歷,直到查到或者查詢失敗。

hash:根據儲存資料特定關鍵字,然後根據關鍵字直接查詢想要得到資料。

hash儲存位置通常稱作hash位址。

hash位址是由關鍵字經過特定的 hash函式運算得到。

3、當關鍵字重複就會產生資料衝突。

二、hash表的構造方法

1、直接定址法

例如:有乙個從1到100歲的人口數字統計表,其中,年齡作為關鍵字,雜湊函式取關鍵字自身。

但這種方法效率不高,時間複雜度是o(1),空間複雜度是o(n),n是關鍵字的個數

eg:f(x) = 5x+10

x代表的就是年齡,而f(x)獲取到的就是對應位址,是取hash位址與關鍵字構成的線性函式。

2、平方取中法

適用關鍵字是數字的情況,將關鍵字平方然後取其中間的幾位作為hash位址。

3、數字分析法

比如同齡人的出生年月,由於前幾位數字的重複機率較大,所以造成衝突的機率較高,所以盡量不取前幾位。

4、摺疊法

將關鍵字分割成相同的幾段數字(最後一部分可以不同),然後將得到的幾段數字疊加(進製捨去)作為hash位址,摺疊法

eg:每一種西文圖書都有乙個國際標準圖書編號,它是乙個10位的十進位制數字,若要以它作關鍵字建立乙個雜湊表,

如果一本書的編號為1234-5678-321,可以將其分為。而hash位址則是這幾個數之和。

5、除留取餘法

如果知道hash表的最大長度為m,可以取不大於m的最大質數p,

然後對關鍵字進行取餘運算,f(x) = x%p。

在這裡p的選取非常關鍵,p選擇的好的話,能夠最大程度地減少衝突,

p一般取不大於m的最大質數。

6、隨機數法

選擇乙個隨機函式,取關鍵字的隨機函式值為它的雜湊位址,即

f(x)=random(x) ,其中random為隨機函式。通常用於關鍵字長度不等時採用此法。

三、衝突處理

1、開放定址法

關鍵字衝突時,使用某種探測技術在hash表中形成乙個探測序列,然後沿著這個探測序列依次查詢下去,

當碰到乙個空的單元時,則插入其中。

eg:一組關鍵字,

hash表長為14,hash函式為f(x)=x%11,當插入13,25時可以直接插入,而當插入23時,位址1被占用了,

因此沿著位址1依次往下探測(探測步長可以根據情況而定),直到探測到位址3,發現為空,則將23插入其中。

2、再雜湊法

3、鏈位址法

採用陣列和鍊錶結合的方式,hashmap中就是採用這種方式儲存hash位址,原理是將hash位址(經過關鍵字計算的值)相同的記錄存在同乙個鍊錶中,

而每張表的表頭序號就是新的hash位址。

4、建立乙個公共溢位區

假設雜湊函式的值域為[0,m-1],則設向量hashtable[0..m-1]為基本表,另外設立儲存空間向量overtable[0..v]用以儲存發生衝突的記錄。

參考博文:

hash學習筆記

學長來講了hash,感覺好香 而我們常將雜湊的思想用在字串中 用於o 1 判斷給出的兩個字串是否相等 預處理完的情況下 這裡結合例題理解一下 給出兩個字串a與b 每次詢問給出l,r,s,t 判斷a l.r 與 b s.t 是否相等 如果我們用裸的暴力的話 顯然對於每次詢問我們都要用o n 的效率 所...

hash表學習資料

資料結構 資料間關係 資料儲存方式。常見的資料結構有鍊錶,堆,棧,佇列,表,樹,圖等。選擇何種資料結構,取決於需要解決什麼樣的問題。雜湊表 hash table 即雜湊表,是根據關鍵碼值 key value 而直接進行訪問的資料結構。其核心思想是選擇乙個雜湊函式或者隨機函式,用乙個和記錄相關的值作為...

hash表 hash演算法

概念 雜湊表 hash table。也叫雜湊表 是依據關鍵碼值 key value 而直接進行訪問的 資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。給定表m,存在函式f key 對隨意給定的keyword值ke...