freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

哈希函數(shù)構(gòu)造方法研究(doc畢業(yè)設(shè)計(jì)論文)(編輯修改稿)

2024-07-15 20:54 本頁面
 

【文章內(nèi)容簡介】 法聯(lián)合起來使用,比如先變基,再折疊或平方取中等等,只要散列均勻,就可以隨意拼湊。[5] ↑取關(guān)鍵字被某個(gè)不大于哈希表表長m的數(shù)p除后所得余數(shù)為哈希地址,即設(shè)定哈希函數(shù)為 Hash(key)=key mod p (p≤m),其中,除數(shù)p稱作模。除留余數(shù)法不僅可以對關(guān)鍵字直接取模,也可以在折疊、平方取中等運(yùn)算后取模。對于除留余數(shù)法求哈希地址,關(guān)鍵在于模p的選擇。使得數(shù)據(jù)元素集合中每一個(gè)關(guān)鍵字通過該哈希函數(shù)映射到內(nèi)存單元的任意地址上的概率相等,從而盡可能減少發(fā)生哈希沖突的可能性。理論研究表明,除留余數(shù)法的模p取不大于表長且最接近表長m素?cái)?shù)時(shí)效果最好,~(n為存在的數(shù)據(jù)元素個(gè)數(shù))。例如:當(dāng)n=7時(shí),p最好取113等素?cái)?shù)。 又例圖(5):表長m81632641282565121000模p7133161127251503997由于除留余數(shù)法的地址計(jì)算方法簡單,而且在許多情況下效果較好。[2]↑例9,公司有236個(gè)員工,而員工編號介于1000到9999,除留余數(shù)法就是員工編號除以數(shù)據(jù)個(gè)數(shù)236后,去余數(shù)即為數(shù)據(jù)的位置。編號5428員工的數(shù)據(jù)(編號5428除以236取余數(shù)得0)放數(shù)據(jù)中的第一筆,編號3512員工數(shù)據(jù)(編號3512除以236取余數(shù)得8)放數(shù)據(jù)中的第九筆…依次類推。8.隨機(jī)乘數(shù)法 亦稱為“乘余取整法”。隨機(jī)乘數(shù)法使用一個(gè)隨機(jī)實(shí)數(shù)f,0≤f1,乘積f*k的分?jǐn)?shù)部分在0~1之間,用這個(gè)分?jǐn)?shù)部分的值與n(哈希表的長度)相乘,乘積的整數(shù)部分就是對應(yīng)的哈希值,顯然這個(gè)哈希值落在0~n1之間。其表達(dá)公式為:Hash(k)=「n*(f*k%1)」其中“f*k%1”表示f*k 的小數(shù)部分,即f*k%1=f*k「f*k」[5] ↑ 例10,對下列關(guān)鍵字值集合采用隨機(jī)乘數(shù)法計(jì)算哈希值,隨機(jī)數(shù)f= 哈希表長度n=100得圖(6):kf*kn*((f*k)的小數(shù)部分)Hash(k)31942647718309866294434291969783 此方法的優(yōu)點(diǎn)是對n的選擇不很關(guān)鍵。通常若地址空間為p位就是選n=,他認(rèn)為f取任何值都可以,但某些值效果更好。如f=(1)/2=...比較理想。[8] ↑9.字符串?dāng)?shù)值哈希法在很都情況下關(guān)鍵字是字符串,因此這樣對字符串設(shè)計(jì)Hash函數(shù)是一個(gè)需要討論的問題。下列函數(shù)是取字符串前10個(gè)字符來設(shè)計(jì)的哈希函數(shù)Int Hash _ char (char *X){ int I ,sum i=0。 while (i 10 amp。amp。 X[i]) Sum +=X[i++]。 sum%=N。 //N是記錄的條數(shù) }這種函數(shù)把字符串的前10個(gè)字符的ASCⅡ值之和對N取摸作為Hash地址,只要N較小,Hash地址將較均勻分布[0,N]區(qū)間內(nèi),因此這個(gè)函數(shù)還是可用的。對于N很大的情形,可使用下列函數(shù)int ELFhash (char *key ){ Unsigned long h=0,g。whie (*key){ h=(h4)+ *key。key++。g=h amp。 0 xF0000000L。if (g) h^=g24。h amp。 =~g。}h=h % Nreturn (h)。} 這個(gè)函數(shù)稱為ELFHash(Exextable and Linking Format ,ELF,可執(zhí)行鏈接格式)函數(shù)。它把一個(gè)字符串的絕對長度作為輸入,并通過一種方式把字符的十進(jìn)制值結(jié)合起來,對長字符串和短字符串都有效,這種方式產(chǎn)生的位置不可能不均勻分布。[7] ↑ 旋轉(zhuǎn)法是將數(shù)據(jù)的鍵值中進(jìn)行旋轉(zhuǎn)。旋轉(zhuǎn)法通常并不直接使用在哈希函數(shù)上,而是搭配其他哈希函數(shù)使用。 例11,某學(xué)校同一個(gè)系的新生(小于100人)的學(xué)號前5位數(shù)是相同的,只有最后2位數(shù)不同,我們將最后一位數(shù),旋轉(zhuǎn)放置到第一位,其余的往右移。新生學(xué)號旋轉(zhuǎn)過程旋轉(zhuǎn)后的新鍵值506210150621011506210506210250621022506210506210350621033506210506210450621044506210506210550621055506210 如圖(7) 運(yùn)用這種方法可以只輸入一個(gè)數(shù)值從而快速地查到有關(guān)學(xué)生的信息。[9] ↑偽隨機(jī)數(shù)法是將利用數(shù)據(jù)的鍵值經(jīng)過隨機(jī)數(shù)法的運(yùn)算后的結(jié)果作為數(shù)據(jù)存儲(chǔ)的位置。其公式如下(a和c為質(zhì)數(shù)):Y=(a * Key + c)mod 數(shù)組的大小例12,某公司的某女員工的編號是321547,現(xiàn)該公司共有107個(gè)女職工,我們?nèi)=13,c=5則Y=(13*321547+5)%107 =(4180111+5)%107 =54則取54當(dāng)作該員工數(shù)據(jù)存儲(chǔ)的位置。[10] ↑ 小 結(jié)有許多種不同的哈希函數(shù)設(shè)計(jì)方法,這里主要討論幾種常用的不同類型關(guān)鍵字的希函數(shù)設(shè)計(jì)方法:直接定址法、數(shù)字分析法、折疊法、平方取中法、減去法、基數(shù)轉(zhuǎn)換法、除留余數(shù)法、隨機(jī)乘數(shù)法、字符串?dāng)?shù)值哈希法、偽隨機(jī)數(shù)法、旋轉(zhuǎn)法。盡管哈希函數(shù)的構(gòu)造方法有很多,但不同的方法適用于不同的情況。如:當(dāng)鍵字是字符串時(shí)可以用字符串?dāng)?shù)值哈希法構(gòu)造哈希函數(shù);當(dāng)關(guān)鍵字是整數(shù)類型時(shí)就可以用除留余數(shù)法、直接定址法和數(shù)字分析法等設(shè)計(jì)哈希函數(shù);而關(guān)鍵字是小數(shù)類型常用偽隨機(jī)數(shù)法來構(gòu)造哈希函數(shù)等。 參 考 文 獻(xiàn)[1](C++
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1