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

2021-08-13 19:27:31 字數 1801 閱讀 7249

**雜湊表

優點:速度快(插入和查詢)

缺點:基於陣列,不能有序的遍歷

鍵值對儲存方式,通過鍵來訪問值

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比較。若相等則查詢成功,否則按建表時設定的處理衝突的方法找下乙個位址。如此反覆下去,直到某個位址單元為空 查詢失敗 或者關鍵字比較相等 ...