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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

除留余数法学习

發(fā)布時(shí)間:2023/12/14 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 除留余数法学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
除留余數(shù)法介紹
除留余數(shù)法此方法為最常用的構(gòu)造散列函數(shù)方法。對(duì)于散列表長(zhǎng)為m的散列函數(shù)公式為:
f( key ) = key mod p ( p ≤ m )
mod是取模(求余數(shù))的意思。事實(shí)上,這方法不僅可以對(duì)關(guān)鍵字直接取模,也可在折疊、
平方取中后再取模。


一個(gè)例子
? 很顯然,本方法的關(guān)鍵就在于選擇合適的p, p如果選得不好,就可能會(huì)容易產(chǎn)生同義詞。
? 下面我們來舉個(gè)例子看看:
? 有一個(gè)關(guān)鍵字,它有12個(gè)記錄,現(xiàn)在我們要針對(duì)它設(shè)計(jì)一個(gè)散列表。如果采用除留余數(shù)法,
? 那么可以先嘗試將散列函數(shù)設(shè)計(jì)為f(key) = key mod 12的方法。比如29 mod 12 = 5,所以
? 它存儲(chǔ)在下標(biāo)為5的位置。


? 不過這也是存在沖突的可能的,因?yàn)?2 = 2×6 = 3×4。
? 如果關(guān)鍵字中有像18(3×6)、30(5×6)、42(7×6)等數(shù)字,它們的余數(shù)都為6,這就和78所對(duì)應(yīng)
? 的下標(biāo)位置沖突了。


如何合理選取p值


? 使用除留余數(shù)法的一個(gè)經(jīng)驗(yàn)是,若散列表表長(zhǎng)為m,通常p為小于或等于表長(zhǎng)(最好接近m)的最小質(zhì)數(shù)或不包含小于20質(zhì)因子的合數(shù)。


? 這句話怎么理解呢?要不這樣吧,
? 我再舉個(gè)例子:某散列表的長(zhǎng)度為100,散列函數(shù)H(k)=k%P,則P通常情況下最好選擇哪個(gè)呢?
? A、91 B、93 C、97 D、99
?實(shí)踐證明,當(dāng)P取小于哈希表長(zhǎng)的最大質(zhì)數(shù)時(shí),產(chǎn)生的哈希函數(shù)較好。我選97,因?yàn)樗请x長(zhǎng)度值最近的最大質(zhì)數(shù)。

總結(jié)

以上是生活随笔為你收集整理的除留余数法学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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