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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

直接定址法

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

??例1,有一個人口統計表,記錄了從1歲到100歲的人口數目,其中年齡作為關鍵字,哈希函數取關鍵字本身,如圖(1):

地址

A1

A2

……

A99

A100

年齡

1

2

……

99

100

人數

980

800

……

495

107

可以看到,當需要查找某一年齡的人數時,直接查找相應的項即可。如查找99歲的老人數,則直接讀出第99項即可。這種哈希函數簡單,并且對于不同的關鍵字不會產生沖突,但可以看出這是一種較為特殊的哈希函數,實際生活中,關鍵字的元素很少是連續的。用該方法產生的哈希表會造成空間大量的浪費,因此這種方法適應性并不強。[2]↑

除留余數法

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

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

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

表長m

8

16

32

64

128

256

512

1000

模p

7

13

31

61

127

251

503

997

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

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

?

轉載于:https://www.cnblogs.com/claudia529/p/11107746.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。