查詢演算法彙總(雜湊表)

2021-10-07 11:47:45 字數 780 閱讀 4076

處理衝突的方法

雜湊查詢

將發生衝突的不同關鍵字稱為同義詞。

此種方法最簡單,且不會產生衝突。

適合關鍵字的分布基本連續的情況,若關鍵字分布不連續,空位較多,會造成儲存空間浪費。

雜湊表長為m,取乙個小於且接近m的質數p,雜湊函式為h(key)=key%p。

關鍵要選好p,使每個關鍵字通過該函式轉換後等概率對映到雜湊空間上任一位址。

選好p有助於減少衝突的發生。

若關鍵字r為進製數,而r個數碼在各位上出現的概率不一定相同,此時選取數碼分布較為均勻的若干位作為雜湊位址。

適用於已知關鍵字的集合,若關鍵字改變,那麼需要重新構造雜湊函式。

取關鍵字的平方值的中間幾位,取值位數視情況而定。

這種方法得到的雜湊位址與關鍵字每位都有關係,使得雜湊位址分布比較均勻。

適用於關鍵字的每位取值都不夠均勻或均小於雜湊位址所需的位數。

將關鍵字分割成位數相同的幾部分,然後取這幾部分的疊加作為雜湊位址。

適用於關鍵字很多,且關鍵字中每位上數字分布大數均勻時。

平方探測法:表長m必須是可表示成4k+3的素數,只能探測到至多一半的單元。

偽隨機雜湊法:增量序列為偽隨機數序列。

可把所有同義詞儲存在乙個線性鍊錶中,線性表由其雜湊位址唯一標識。

對於給定的關鍵字key,根據雜湊函式計算出其雜湊位址。

初始化:addr=hash(key);

裝填因子α:表中記錄數n/雜湊表長度m。

α越大,表示裝填的記錄越滿,發生衝突的可能性越大。

查詢演算法 雜湊演算法,雜湊表查詢

那麼問題來了,如果集合s中同時存在值k 16和值k 27,我們該如何將兩個位址一樣的值存入雜湊表呢?常用的雜湊函式 處理衝突的方法 2.連位址法 雜湊表涉及的是一種對映關係,可以根據某個值查詢到關鍵字的位址,這樣的做法省去了比較的時間,優化了演算法。雜湊表是把值 關鍵字 存到跟它具有 唯一 對映的格...

演算法 查詢 雜湊表查詢

查詢除了線性表的查詢 順序 二分 分塊 樹上查詢 bst b 樹 還有一種雜湊查詢。相比於前兩種查詢,雜湊表的查詢效率驚人的高o 1 它採用的直接定址技術,基本上就是實現了精準打擊,達到一擊而中的效果。所謂的直接定址技術,說白了,就是儲存記錄時,通過雜湊函式計算出乙個雜湊位址 讀取記錄時,通過同樣的...

《演算法》 查詢 雜湊表

雜湊表也是一種符號表,主要特徵是可以將鍵通過雜湊函式對映為乙個陣列索引,然後利用這個陣列索引就可以做很多東西。當我們輸入乙個物件,不論這是個什麼東西,經過雜湊函式處理之後輸出乙個0到m 1的範圍之內的整數。對於雜湊函式有一些要求 相等的物件 使用equals 函式 的雜湊值是相同的 2.同樣的雜湊值...