Hash Table 概念及構造方法

2021-06-30 16:25:04 字數 1123 閱讀 2666

hash table 中文稱雜湊表或雜湊表,就是通過關鍵碼將資料對映到某個位置上並需要通過該關鍵碼來進行訪問資料,因此在雜湊表中最核心的點就是如何獲取關鍵碼。有了關鍵碼就可以很方便的對資料進行查詢,而雜湊表最重要的用途之一就是用來做索引。

其中,將資料對映為關鍵碼的函式就成為對映函式。為了使得查詢的效率變高,理所當然地我們需要盡可能地讓最終資料的分布均勻地出現在每個位置上,而且所使用的對映函式盡可能簡單,下面將介紹如何構造乙個合理的對映函式。

雜湊函式的構造方法

下面整個過程都以key為輸入的資料,hash()即為對映函式。

隨機數法

方法:hash(key)=random(key)

除留餘數法

方法:hash(key)=key%p (p < m 且p最好為質數)

乘留餘數法

方法:hash(key)=[n*(a*key)%1] (0 < a <1)

上述就是構造雜湊表的基本方法,但問題出現了,如{1,4,5,6,10}的序列中,若取hash(key)=key%5,那麼將會出現hash(5)=hash(10)的情況。這就成為衝突。衝突是我們所需要盡量避免的,因為這對於查詢而言是及不利的情況,那如何避免衝突呢?

避免衝突的方法

衝突只能盡量避免並不能阻止其出現。

二次探測法

基本衡量概念及計算方法

上面我們已經知道了如何構建雜湊函式,如何避免衝突,在此就回頭介紹一些基本概念。

雜湊索引

hash 索引會被應用在資料庫中,鑑於其結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像b-tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問,所以 hash 索引的查詢效率要遠高於 b-tree 索引。

下面是雜湊索引的特點:

上述就是關於hash table 的簡單介紹,希望之後可以把所有東西都實現一遍,然後把**放上來。

雜湊 hash table 概念總結

1.分離鏈結法 將雜湊值相同的儲存到乙個表中 可以是鍊錶 樹 也可以是另乙個雜湊 2.開放定址法 1 線性探測法 逐個探測是否有空閒位址 衝突函式為線性 2 平方探測法 衝突函式為二次函式的探測方法 3 雙雜湊 衝突函式為另乙個雜湊函式 個人理解 開放定址法可能會導致雜湊元素填的太滿,當雜湊太滿時,...

EHCI,OHCI,UHCI概念及區別

uhci ehci ohci基本概念 uhci universal host controller inte ce intel用在自家晶元組上的usb 1.1主控制器 host controller 的硬體介面 ehci enhanced host controller inte ce 增強型主機控...

mapReduce概念及用法

mapreduce 隨著 大資料 概念而流行 其實mapreduce 的概念非常簡單 從功能上說 相當於 rdbms 的group 操作 mapreduce的真正強項在哪?答 在於分布式 當資料非常大時,像 google,有n 多資料中心 資料都不在地球的一端,用 group 力所不及.group既...