**雜湊表
優點:速度快(插入和查詢)
缺點:基於陣列,不能有序的遍歷
鍵值對儲存方式,通過鍵來訪問值
hashmap.put( key , value );
線性探測屬於開放位址法
線性探測插入演示:
陣列最初狀態
在這組資料中要插入83
先對要插入資料雜湊化,雜湊化後的資料就是陣列下標,這裡雜湊化後的資料是23
然後發現23已經有資料了,產生衝突,線性探測的解決方案是依次遞增,直到找到空位
/* * 2023年12月19日17:04:18
* * 雜湊表
* * 解決雜湊衝突的方法為開放位址法(線性探測)
*/public
//雜湊化
public
inthash ( int
value )
//新增新資料
public
void
insert ( int data )
int index = hash ( data ) ;//計算雜湊化後的索引
newitem = new dataitem ( data ) ;
//當前下標中元素不為空,說明有元素了,index遞增
while ( arr [index] != null )
arr [index] = newitem ;//退出迴圈,說明找到空位了,放進去
++ currentsize ;
}//刪除資料
public
void
delete ( int data )
index ++ ;
index = hash (index) ;}}
//查詢資料
public dataitem find ( int
value )
index ++ ;
index = hash (index) ;
}return
null ;
}//判斷陣列是否滿
public boolean isfull ()
//雜湊表無法有序的遍歷!
//所以這裡遍歷只是檢視乙個資料的分布情況
public
void
display ()
system.out.println ( );
}}---------------------------------------------
package map;
public
class dataitem
public
intgetvalue ()
public
void
setvalue ( int
value )
}
雜湊之線性探測法
資料結構實驗之查詢七 線性之雜湊表 time limit 1000ms memory limit 65536kb problem description 根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式h key key p,將關鍵字對映到長度為p的雜湊表中,用線性探測法解決衝突。重...
雜湊表 開放位址法(二次探測以及在雜湊法)
首先你要知道什麼二次探測,在雜湊法都是用來解決雜湊衝突的。在雜湊法,就是有兩個雜湊方法,第乙個雜湊化方法,確定初始位置,衝突就執行第二個雜湊化方法。注意 在雜湊法第二個雜湊化函式的要求 1.第二個雜湊化函式不能和第乙個一樣 2.不能輸出0 舉個例子 第二個方法可以設計成這樣 第二個雜湊函式 計算下標...
雜湊表 開放位址法
雜湊表的查詢過程和建表過程相似。假設給定的值為k,根據建表時設定的雜湊函式h,計算出雜湊位址h k 若表中該位址單元為空,則查詢失敗 否則將該位址中的結點與給定值k比較。若相等則查詢成功,否則按建表時設定的處理衝突的方法找下乙個位址。如此反覆下去,直到某個位址單元為空 查詢失敗 或者關鍵字比較相等 ...