雜湊表 開放位址法(二次探測以及在雜湊法)

2021-08-13 19:33:59 字數 1331 閱讀 6335

首先你要知道什麼二次探測,在雜湊法都是用來解決雜湊衝突的。

在雜湊法,就是有兩個雜湊方法,第乙個雜湊化方法,確定初始位置,衝突就執行第二個雜湊化方法。

注意:在雜湊法第二個雜湊化函式的要求

1.第二個雜湊化函式不能和第乙個一樣

2.不能輸出0

舉個例子:第二個方法可以設計成這樣

第二個雜湊函式

計算下標值:指數-(儲存值%指數)(指數:只能被1和其本身整除的數)

然後上**:

package map;

/* * 在雜湊法

* * 第二個雜湊化函式的要求

* 1.第二個雜湊化函式不能和第乙個一樣

2.不能輸出0

第二個雜湊函式

指數-儲存值%指數(指數:只能被1和其本身整除的數)

*/public

//判斷是否滿

public boolean isfull ()

//雜湊化

public

inthash ( int

value )

//二次雜湊

public

intdoublehash ( int

value )

return index ;

}//查詢資料

public

intfind ( int data )

index += step ;//沒找到使用二次雜湊

index %= arr.length ;//防止index超出陣列下標

}return - 1 ;//沒找到

}//插入資料

public

void

insert ( int data )

int index = hash ( data ) ;//存放第一次雜湊化後下標

int step = doublehash ( data ) ;//存放第二次雜湊化後值

newitem = new item ( data ) ;

//找位置

while ( arr [index] != null )

//跳出迴圈代表找到空位了

arr [index] = newitem ;

++size ;

}//刪除資料

public boolean delete ( int data )

else

}//雜湊無法有序遍歷,這裡的只是用來觀察元素分布情況

public

void

display ()

system.out.println ();

}}

雜湊表 開放位址法之線性探測

雜湊表 優點 速度快 插入和查詢 缺點 基於陣列,不能有序的遍歷 鍵值對儲存方式,通過鍵來訪問值 hashmap.put key value 線性探測屬於開放位址法 線性探測插入演示 陣列最初狀態 在這組資料中要插入83 先對要插入資料雜湊化,雜湊化後的資料就是陣列下標,這裡雜湊化後的資料是23 然...

二次探測法

設雜湊表長為11,雜湊函式為hash key key 11。存在關鍵碼,採用二次探測法處理衝突,建立的hash表為 二次探測法 採用開放定址法處理衝突中的二次探測再雜湊 也即是題目中的二元探測法 則雜湊函式變為hash key hash key d 11,其中d 1 2,1 2,2 2,2 2,3 ...

雜湊表之線性探測和二次探測

雜湊表又稱雜湊表。雜湊表儲存的基本思想是 以資料表中的每個記錄的關鍵字 k為自變數,通過一種函式h k 計算出函式值。把這個值解釋為一塊連續儲存空間 即陣列空間 的單元位址 即下標 將該記錄儲存到這個單元中。在此稱該函式h為哈函式或雜湊函式。按這種方法建立的表稱為雜湊表或雜湊表。處理衝突的方法 開放...