雜湊表(雜湊表)

2021-07-04 12:50:49 字數 1884 閱讀 3796

雜湊表是最基礎的資料結構之一,利用鍵值對儲存並檢索資料的一種非線性結構。

在其它各種結構線性表、樹等資料結構中,記錄在結構中的位置是隨機的,和記錄關鍵字之間不存在確定的關係,因此,在結構中查詢記錄時需進行一系列和關鍵字的「比較」的基礎上。在順序查詢時,比較的結果為「==」與「!=」兩種可能;在折半查詢、二叉排序樹查詢和b-樹查詢時,比較的結果為「<」、」=」和「>」3種可能。查詢的效率依賴於查詢過程中所進行的比較次數。

理想的情況是希望不經過比較,一次訪問便能得到所查記錄,那就必須在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使每個關鍵字和結構中乙個唯一的儲存位置相對應。因而在查詢時,只要根據這個對應關係f找到給定值k的像f(k)。若結構中存在關鍵字和k相等的記錄,則必定在f(k)的儲存位置上,由此,不需要進行比較便可直接取得所查記錄。在此,我們稱這個對應的關係f為雜湊(hash)函式,按這個思想建立的表為雜湊表。

然而,在一般情況下,衝突只能盡可能地少,而不能完全避免。因為,雜湊函式是從關鍵字集合到位址集合的映像。通常,關鍵字集合集合比較大,它的元素包括所有可能的關鍵字。而位址集合元素僅為雜湊表中的位址值。假設表長為n,則位址為0到n-1。例如,在c語言的編譯程式中可對源程式中的識別符號建立一張雜湊表。在設定雜湊函式時考慮的關鍵字集合應包含所有可能產生的關鍵字;假設識別符號定義為以字母為首的8位字母或數字,則關鍵字(識別符號)的集合大小(-----ps:數字大,列印不了····) ,而在乙個源程式中出現的標識符合是有限的,設表長為1000足矣。位址集合中的元素為0~999。因此,在一般情況下,雜湊函式是乙個壓縮映像,這就不可避免產生衝突。因此,在建造雜湊表時不僅要設定乙個」好「的雜湊函式,而且要設定一種處理衝突的方法。

綜上所述,可如下描述雜湊表:根據設定的雜湊函式h(key)和處理衝突的方法將一組關鍵字映像到乙個有限的連續位址集上,並以關鍵字在位址集中的」像「作為記錄在表中儲存位置,這種表便稱為雜湊表,這一映像過程稱為雜湊造表或雜湊,所得儲存位置稱雜湊位址或者雜湊位址。

雜湊函式的構造方法:
若對於關鍵字集合中的任乙個關鍵字,雜湊函式映像到位址集合中任何乙個位址的概率是相等的,則稱此類雜湊函式為均勻的雜湊函式。換句話說,就是使關鍵字經過雜湊函式得到乙個「隨機的位址「,以便使一組關鍵字的雜湊位址均勻分布在整個位址區間中,從而減少衝突。

1.直接定址法

h(key)=key或h(key)=a*key+b;

其中a和b為常數(這種雜湊函式叫做自身函式)。

由於直接定址所得位址集合和關鍵字集合的大小相同。因此,對於不同的關鍵字不會發生衝突。但實際中使用這種雜湊函式的情況很少。

2.數字分析法

3.平方取中法

取關鍵字平方後的中間幾位為雜湊位址。

4.摺疊法

將關鍵字分割成位數相同的幾部分(最後一部分的位數可以不同),然後取這幾部分的疊加和(捨去進製)作為雜湊位址,這方法稱為摺疊法。

5.除留餘數法

取關鍵字被某個不大於雜湊表表長m的數p除后所得餘數為雜湊位址。即h(key)=key mod p,(p<=m),這是一種最簡單,也是最常用的構造雜湊函式的方法。它不僅可以對關鍵字直接取模(mod),也可在摺疊、平方取中等運算之後取模。

6.隨機數法

選擇乙個隨機函式,取關鍵字的隨機函式值為它的雜湊位址,即h(key)=random(key),其中random為隨機函式。通常,當關鍵字長度不等時採用此法構造雜湊函式較切當。

總結:實際工作中需視不同情況採用不同的雜湊函式,通常,考慮的因素有:

(1)計算雜湊函式所需時間(包括硬體指令的因素);

(2)關鍵字的長度;

(3)雜湊表的大小;

(4)關鍵字的分布情況;

(5)記錄的查詢頻率。

處理衝突的方法(衝突只能減少,不能避免):

1.開放定址法

2.再雜湊法

3.鏈位址法

4.建立乙個公共溢位區

雜湊表 雜湊表

一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...

雜湊表(雜湊表)

原文 雜湊表是種資料結構,它可以提供快速的插入操作和查詢操作。第一次接觸雜湊表時,它的優點多得讓人難以置信。不論雜湊表中有多少資料,插入和刪除 有時包括側除 只需要接近常量的時間即0 1 的時間級。實際上,這只需要幾條機器指令。對雜湊表的使用者一一人來說,這是一瞬間的事。雜湊表運算得非常快,在電腦程...

雜湊表(雜湊表)

雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f key 這裡我們把這種對應關係f稱為雜湊函式,又稱為雜湊函式。按照這個思想,採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊表或雜湊表 直接定址法 數字分析法 平方取中法...