首先你要知道什麼二次探測,在雜湊法都是用來解決雜湊衝突的。
在雜湊法,就是有兩個雜湊方法,第乙個雜湊化方法,確定初始位置,衝突就執行第二個雜湊化方法。
注意:在雜湊法第二個雜湊化函式的要求
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為哈函式或雜湊函式。按這種方法建立的表稱為雜湊表或雜湊表。處理衝突的方法 開放...