線性探測解決hash衝突

2021-10-06 15:48:25 字數 847 閱讀 3447

我們來簡單的例子說明什麼是線性探測

假設我們有乙個陣列

假設我們用當前公式計算當前資料在陣列中的下標位置

int i = num%11;

假設我們有一組資料需要放置在陣列中

那麼他們對應的下標位置應該分別為

資料:1 下標:1%11 = 1

資料:2 下標:2%11 = 2

資料:3 下標:3%11 = 3

資料:11 下標:11%11 = 0

資料:12 下標:12%11 = 1

資料:13 下標:13%11 = 2

資料:14 下標:14%11 = 3

好,我們把他分別落到對應位置,當 1,2,3,11 四個數落入沒有任何問題

但是當落入12的時候,發現他的下標為1,跟資料1的下標重複了,下標1位置已經放入資料1了,那麼怎麼辦呢?

按照線性探測的說法是,如果當前位置資料衝突了,就從當前位置起,往後找,直到找到為null的位置,然後把資料儲存到此節點

那麼12最終儲存的位置就是如下圖

同理,13和14的落入就應該如下圖

hash解決衝突之 平方探測

資料結構實驗之查詢五 平方之雜湊表 time limit 400ms memory limit 65536k 有疑問?點這裡 題目描述 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增...

hash解決衝突之 平方探測

資料結構實驗之查詢五 平方之雜湊表 time limit 400ms memory limit 65536k 有疑問?點這裡 題目描述 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增...

關於解決Hash衝突的線性探測開放位址法和拉鍊法

在實際應用中,無論如何構造雜湊函式,衝突是無法完全避免的。鏈位址法解決衝突的做法是 如果雜湊表空間為 0 m 1 設定乙個由 m 個指標分量組成的一維陣列 st m 凡雜湊位址為 i 的資料元素都插入到頭指標為 st i 的鍊錶中。這種方法有點近似於鄰接表的基本思想,且這種方法適合於衝突比較嚴重的情...