雜湊表簡介

2021-05-22 04:31:33 字數 761 閱讀 3503

雜湊表又名雜湊表,其主要目的是用於解決資料的快速定位問題。考慮如下乙個場景。

一列鍵值對資料,儲存在乙個table中,如何通過資料的關鍵字快速查詢相應值呢?不要告訴我乙個個拿出來比較key啊,呵呵。

大家都知道,在所有的線性資料結構中,陣列的定位速度最快,因為它可通過陣列下標直接定位到相應的陣列空間,就不需要乙個個查詢。而雜湊表就是利用陣列這 個能夠快速定位資料的結構解決以上的問題的。

具體如何做呢?大家是否有注意到前面說的話:「陣列可以通過下標直接定位到相應的空間」,對就是這句,雜湊表的做法其實很簡單,就是把key通過乙個固定 的演算法函式既所謂的雜湊函式轉換成乙個整型數字,然後就將該數字對陣列長度進行取餘,取餘結果就當作陣列的下標,將value儲存在以該數字為下標的陣列 空間裡,而當使用雜湊表進行查詢的時候,就是再次使用雜湊函式將key轉換為對應的陣列下標,並定位到該空間獲取value,如此一來,就可以充分利用到 陣列的定位效能進行資料定位。

不知道說到這裡,一些不了解的朋友是否大概了解了雜湊表的原理,其實就是通過空間換取時間的做法。到這裡,可能有的朋友就會問,雜湊函式對key進行轉 換,取餘的值一定是唯一的嗎?這個當然不能保證,主要是由於hashcode會對陣列長度進行取餘,因此其結果由於陣列長度的限制必然會出現重複,所以就 會有「衝突」這一問題,至於解決衝突的辦法其實有很多種,比如重複雜湊的方式,大概就是定位的空間已經存在value且key不同的話就重新進行雜湊加一 並求模陣列元素個數,既 (h(k)+i) mod s , i=1,2,3…… ,直到找到空間為止。還有其他的方式大家如果有興趣的話可以自己找找資料看看

雜湊表簡介

一 雜湊表 hashtable 簡述 在.net framework中,hashtable是system.collections命名空間提供的乙個容器,用於處理和表現類似key value的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫 value用於儲存對應於key的值。hashta...

雜湊表簡介

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

雜湊表入門 雜湊桶簡介

最近在搞通訊協議,感覺要加強一下雜湊表和雜湊桶的學習,把學習的內容通俗的表達出來,也和大家分享一下,讓新入門的童鞋很快理解。我們都學過函式,三要素 自變數x,因變數y,對應關係f。在函式裡x y通過對映關係f一一對應。那什麼是雜湊呢?就是記錄的儲存位置和他的關鍵字之間建立乙個確定的對應關係f,這裡我...