資料結構 雜湊表

2021-10-23 14:37:17 字數 2795 閱讀 1519

雜湊表又稱為雜湊表,它是由陣列和鍊錶或者陣列和二叉樹構成,今天先來談談由陣列和鍊錶構成的雜湊表

雜湊表結構

下圖是雜湊表的結構:整個雜湊表就是乙個陣列存放許多條鍊錶(鍊錶陣列)

雜湊函式

雜湊表還有乙個形影不離的夥伴叫雜湊函式(雜湊函式)f,它是用來作關鍵字對映的。

每乙個node都含有乙個唯一標識關鍵字id,將id對映到雜湊表的哪個hashlist的工作就由雜湊函式來完成,即f(id)->index,index為hashlist在hashtable陣列裡的下標。雜湊函式可以自己定義對映規則。

優勢雜湊錶比普通的單條鍊錶儲存結構的搜尋速度更快

我們都知道,鍊錶插入效率較高而搜尋效率較低,這是因為搜尋乙個node的時候必須從頭乙個接乙個地搜尋,不能和陣列一樣快速定位。而陣列是插入效率低而搜尋效率高,這是因為插入可能需要大量的元素移動操作。而雜湊表正是融合了這兩者的優點:把一條長鍊表分割成好幾段較短的鍊錶,放到乙個陣列裡。查詢某個node時,先用雜湊函式將node的id對映到某條鍊錶的index,再利用陣列的快速索引定位到指定鍊錶,最後向該條鍊錶裡面搜尋,這樣大大減少了搜尋次數,提高了搜尋效率。而若是想向某條鍊錶插入node,那也是比較高效的(通過雜湊函式對映得到對應index,陣列索引到對應index的這條鍊錶,再把node插入這條鍊錶,我們都知道,鍊錶的插入操作是很高效率的)。

由於雜湊表的搜尋速率很高,因此雜湊表也可以被用來做快取。

演算法**

/**

* * @classname: node

* @description: 鍊錶節點

* @author: fuling

* @date: 2023年8月21日 上午12:02:03

*/public

class

node

@override

public string tostring()

";}}

import com.wdl.search.vo.node;

/** *

* @classname: hashtable

* @description: 雜湊表

* @author: fuling

* @date: 2023年8月20日 下午11:58:50

*/public

class

hashtable

}/**

* * @title: hashfun

* @description: 雜湊函式(雜湊函式),根據id值獲取index

* @param: @param id

* @return: int 陣列的下標index

*/private

inthashfun

(int id)

public

void

add(node node)

public node find

(int id)

public

boolean

update

(node node)

public

boolean

delete

(int id)

}/**

* * @classname: hashlist

* @description: hashtable儲存的元素

* @author: fuling

* @date: 2023年8月21日 上午12:00:51

*/class

hashlist

/** *

* @title: add

* @description: 新增新的node到鍊錶

* @param: @param node 要新增的node

* @return: void

*/public

void

add(node node)

else

}/**

* * @title: delete

* @description: 刪除包含指定id的node

* @param: @param id 指定刪除的id

* @return: boolean 刪除是否成功

*/public

boolean

delete

(int id)

return

false;}

/** *

* @title: update

* @description: 修改id所指向的node

* @param: @param node 要修改的node資訊

* @return: boolean 修改是否成功

*/public

boolean

update

(node node)

return

false;}

/** *

* @title: find

* @description: 找到id所在的node

* @param: @param id 所查詢node的id

* @return: node 找到的node,若找不到則返回null

*/public node find

(int id)

return null;

}}

資料結構 雜湊表

1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...

資料結構 雜湊表

雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...

資料結構 雜湊表

3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...