雜湊是什麼?為什麼雜湊訪問比較快?

2021-07-27 08:16:21 字數 1331 閱讀 6573

本內容為本人學習《大話

資料結構

》一文的總結摘要:

雜湊演算法訪問之所以快,是因為其 直接通過關鍵字key得到要訪問的記錄記憶體儲存位置

試想這樣的場景,你很想學太極拳,聽說學校有個叫張三丰的人打得特別好,於

是你到學校學生處找人,學生處的工作人員可能會拿出學生名單,乙個乙個的查詢,

最終告訴你,學校沒這個人,並說張三丰幾百年前就已經在武當山作古了。可如果你

找對了人,比如在操場上找那些愛運動的同學,人家會告訴你,"哦,你找張三丰呀,

有有有,我帶你去。於是他把你帶到了體育館內,並告訴你,那個教大家打太極的小

伙子就是張三丰',原來"張三丰.是因為他太極拳打得好而得到的外號。

學生處的老師找張三丰,那就是順序表查詢,依賴的是姓名關鍵字的比較。而通

過愛好運動的同學詢問時,沒有遍歷,沒有比較,就憑他們"欲找太極'張三丰',必

在體育館當中"的經驗,直接告訴你位置。

也就是說,我們只需要通過某個函式f,使得

儲存位置=f (關鍵字)

那樣我們可以通過查詢關鍵字不需要比較就可獲得需要的記錄的儲存位置。這就

是一種新的儲存技術一一雜湊技術(雜湊演算法)。

雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得

每個關鍵字key 對應乙個儲存位置f (key)。查詢時,根據這個確定的對應關係找到

給定值key 的對映f (key) ,若查詢集合中存在這個記錄,則必定在f (key) 的位

置上。這裡我們把這種對應關係f 稱為雜湊函式, 又稱為雜湊(hash) 函式。按這個思

想,採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊

表或雜湊表(hash table)。 那麼關鍵字對應的記錄儲存位置我們稱為雜湊位址。

整個雜湊過程其實就是兩步。

(1) 在儲存時,通過雜湊函式計算記錄的雜湊位址,並按此雜湊位址儲存該記

錄。(2) 當查詢記錄時,我們通過同樣的雜湊函式計算記錄的雜湊位址,按此雜湊地

址訪問該記錄。由於訪問用的是同乙個雜湊函式, 因此結果當然也是相同的。

所以說,雜湊技術既是一種儲存方法,也是一種查詢方法。然而它與線性表、

樹、圖等結構不同的是,前面幾種結構,資料元素之間都存在某種邏輯關係,可以用

連線圖示表示出來,而雜湊技術的記錄之間不存在什麼邏輯關係,它只與關鍵字有關

聯。因此,雜湊主要是面向查詢的儲存結構。

我們時常會碰到兩個關鍵字key1 != key2,但是卻有f(key1) = f(key2),這種現象

我們稱為雜湊衝突,如果沒有雜湊衝突,雜湊表是一種非常高效的查詢資料結構,

其時間複雜度為o(1);

雜湊是什麼?為什麼雜湊訪問比較快?

不太恰當的比喻 xm 指的是 小明 也指的是 小萌 xm就是雜湊值,小明和小萌就是擁有同乙個雜湊值的,存在同乙個鍊錶的元素。想要獲取小萌,首先使用hashcode獲取到這兩個人,然後再通過equals獲取到小萌。個人理解 雜湊表其實就是乙個一維陣列,而陣列中的每乙個元素都是乙個單向鍊錶而已。這樣的資...

為什麼雜湊訪問比較快?使用它需要付出什麼代價

雜湊表和雜湊函式是大學資料結構中的課程,實際開發中我們經常用到hashtable這種結構,當遇到鍵 值對儲存,採用hashtable比arraylist查詢的效能高。為什麼呢?我們在享受高效能的同時,需要付出什麼代價 這幾天看紅頂商人胡雪巖,經典台詞 在你享受這之前,必須受別人吃不了的苦,忍受別人受...

雜湊值是什麼

雜湊值是什麼 雜湊值就是檔案的身份證,不過比身份證還嚴格。他是根據檔案大小,時間,型別,創作著,機器等計算出來的,很容易就會發生變化,誰也不能預料下乙個號碼是多少,也沒有更改他的軟體。雜湊演算法將任意長度的二進位制值對映為固定長度的較小二進位制值,這個小的二進位制值稱為雜湊值。雜湊值是一段資料唯一且...