日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哈希函数 直接定址法 除留余数法

發(fā)布時(shí)間:2023/12/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈希函数 直接定址法 除留余数法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

直接定址法

??直接定址法是以數(shù)據(jù)元素關(guān)鍵字k本身或它的線性函數(shù)作為它的哈希地址,即:H(k)=k??或?H(k)=a×k+b?;?(其中a,b為常數(shù))

??例1,有一個(gè)人口統(tǒng)計(jì)表,記錄了從1歲到100歲的人口數(shù)目,其中年齡作為關(guān)鍵字,哈希函數(shù)取關(guān)鍵字本身,如圖(1):

地址

A1

A2

……

A99

A100

年齡

1

2

……

99

100

人數(shù)

980

800

……

495

107

可以看到,當(dāng)需要查找某一年齡的人數(shù)時(shí),直接查找相應(yīng)的項(xiàng)即可。如查找99歲的老人數(shù),則直接讀出第99項(xiàng)即可。這種哈希函數(shù)簡單,并且對(duì)于不同的關(guān)鍵字不會(huì)產(chǎn)生沖突,但可以看出這是一種較為特殊的哈希函數(shù),實(shí)際生活中,關(guān)鍵字的元素很少是連續(xù)的。用該方法產(chǎn)生的哈希表會(huì)造成空間大量的浪費(fèi),因此這種方法適應(yīng)性并不強(qiáng)。[2]↑

除留余數(shù)法

取關(guān)鍵字被某個(gè)不大于哈希表表長m的數(shù)p除后所得余數(shù)為哈希地址,即設(shè)定哈希函數(shù)為??Hash(key)=key?mod?p?(p≤m),其中,除數(shù)p稱作模。

除留余數(shù)法不僅可以對(duì)關(guān)鍵字直接取模,也可以在折疊、平方取中等運(yùn)算后取模。對(duì)于除留余數(shù)法求哈希地址,關(guān)鍵在于模p的選擇。使得數(shù)據(jù)元素集合中每一個(gè)關(guān)鍵字通過該哈希函數(shù)映射到內(nèi)存單元的任意地址上的概率相等,從而盡可能減少發(fā)生哈希沖突的可能性。

理論研究表明,除留余數(shù)法的模p取不大于表長且最接近表長m素?cái)?shù)時(shí)效果最好,且p最好取1.1n~1.7n之間的一個(gè)素?cái)?shù)(n為存在的數(shù)據(jù)元素個(gè)數(shù))。例如:當(dāng)n=7時(shí),p最好取11、13等素?cái)?shù)。?又例圖(5):

表長m

8

16

32

64

128

256

512

1000

模p

7

13

31

61

127

251

503

997

由于除留余數(shù)法的地址計(jì)算方法簡單,而且在許多情況下效果較好。[2]↑

例9,公司有236個(gè)員工,而員工編號(hào)介于1000到9999,除留余數(shù)法就是員工編號(hào)除以數(shù)據(jù)個(gè)數(shù)236后,去余數(shù)即為數(shù)據(jù)的位置。編號(hào)5428員工的數(shù)據(jù)(編號(hào)5428除以236取余數(shù)得0)放數(shù)據(jù)中的第一筆,編號(hào)3512員工數(shù)據(jù)(編號(hào)3512除以236取余數(shù)得8)放數(shù)據(jù)中的第九筆…依次類推。

?

轉(zhuǎn)載于:https://www.cnblogs.com/claudia529/p/11107746.html

總結(jié)

以上是生活随笔為你收集整理的哈希函数 直接定址法 除留余数法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。