您好,登錄后才能下訂單哦!
hash算法的原理是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
比如100個員工,100個工號,就用工號做hash
不失一般性,我們這里只給出其中8個關(guān)鍵字進行分析,8個關(guān)鍵字如下所示:
此法適于:能預(yù)先估計出全體關(guān)鍵字的每一位上各種數(shù)字出現(xiàn)的頻度。
K1=61317602 K2=61326875 K3=62739628 K4=61343634
K5=62706815 K6=62774638 K7=61381262 K8=61394220
取數(shù)據(jù)元素關(guān)鍵字中某些取值較均勻的數(shù)字位作為哈希地址的方法
例2,要構(gòu)造一個數(shù)據(jù)元素個數(shù)n=80,哈希長度m=100的哈希表。
關(guān)鍵字位數(shù)較多,而且關(guān)鍵字中每一位上數(shù)字分布大致均勻的情況。
將關(guān)鍵字分割成位數(shù)相同的幾部分(最后一部分的位數(shù)可以不同),然后取這幾部分的疊加和(舍去進位),這方法稱為折疊法。
這種方法適用于:
則對不同的關(guān)鍵字得到的哈希函數(shù)值不易產(chǎn)生沖突,
由此產(chǎn)生的哈希地址也較為均勻
先取關(guān)鍵字的平方,然后根據(jù)可使用空間的大小,選取平方數(shù)是中間幾位為哈希地址
原理是通過取平方擴大差別,平方值的中間幾位和這個數(shù)的每一位都相關(guān),
此法適于:關(guān)鍵字中的每一位都有某些數(shù)字重復(fù)出現(xiàn)頻度很高的現(xiàn)象
減去法是數(shù)據(jù)的鍵值減去一個特定的數(shù)值以求得數(shù)據(jù)存儲的位置。
將十進制數(shù)X看作其他進制,
比如十三進制,再按照十三進制數(shù)轉(zhuǎn)換成十進制數(shù),提取其中若干為作為X的哈希值。
一般取大于原來基數(shù)的數(shù)作為轉(zhuǎn)換的基數(shù),并且兩個基數(shù)應(yīng)該是互素的。
理論研究表明,除留余數(shù)法的模p取不大于表長且最接近表長m素數(shù)時效果最好
此法適于:對長度不等的關(guān)鍵字構(gòu)造哈希函數(shù)。
對于相似度高的數(shù)據(jù),倒過來就很均勻了
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。