1. 程式人生 > >【演算法筆記】雜湊(hash)總結

【演算法筆記】雜湊(hash)總結

有兩天沒寫部落格了,前兩天刷完了PAT甲級中的雜湊的題目,做一個小小的總結。

雜湊的定義:

將元素通過一個函式轉化成一個整數,使得該整數能夠儘量唯一地代表這個元素。

最常用的雜湊:

對於數字而言,H(key) = key,最常見的用法是某個數字直接作為對於陣列的下標。

比如標記某個數字num(0 <= num <= 10000)是否出現過,可以直接對映到bool陣列vis[10005]的vis[num]上。

除此之外還有線性變換【H(key) = a * key + b】、除留餘數法【H(key) = key % size】等等。

字串hash初步:

可以將字串看作數字進位制。

比如假設字串中只有26個大寫字母,則可以將字串看作是26進位制,通過將26進位制轉化成十進位制的值,得出hash值。

使用map實現hash對映:

可以使用STL庫中的map直接實現hash對映。

比如map<string, int> idx就可以實現字串型別到int整型的hash對映。

idx["hello world"] = 1,就是在將字串"hello world"對映到了1上。

學習不息,繼續加油