




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java Hash算法大全Java代碼 /* Hash算法大全<br>* 推薦使用FNV1算法* algorithm None* author Goodzzp 2006-11-20* lastEdit Goodzzp 2006-11-20* editDetail Create*/ public class HashAlgorithms /*/* 加法hash* param key 字符串* param prime 一個(gè)質(zhì)數(shù)* return hash結(jié)果*/ public static int additiveHash(String key, int prime) int hash,
2、 i; for (hash = key.length(), i = 0; i < key.length(); i+) hash += key.charAt(i); return (hash % prime); /*/* 旋轉(zhuǎn)hash* param key 輸入字符串* param prime 質(zhì)數(shù)* return hash值*/ public static int rotatingHash(String key, int prime) int hash, i; for (hash=key.length(), i=0; i<key.length(); +i) hash = (hash
3、<<4)(hash>>28)key.charAt(i); return (hash % prime); / return (hash (hash>>10) (hash>>20); / 替代: / 使用:hash = (hash (hash>>10) (hash>>20) & mask; / 替代:hash %= prime; /*/* MASK值,隨便找一個(gè)值,最好是質(zhì)數(shù)*/ static int M_MASK = 0x8765fed1; /*/* 一次一個(gè)hash* param key 輸入字符串* return
4、 輸出hash值*/ public static int oneByOneHash(String key) int hash, i; for (hash=0, i=0; i<key.length(); +i) hash += key.charAt(i); hash += (hash << 10); hash = (hash >> 6); hash += (hash << 3); hash = (hash >> 11); hash += (hash << 15); / return (hash & M_MASK); ret
5、urn hash; /*/* Bernstein's hash* param key 輸入字節(jié)數(shù)組* param level 初始hash常量* return 結(jié)果hash*/ public static int bernstein(String key) int hash = 0; int i; for (i=0; i<key.length(); +i) hash = 33*hash + key.charAt(i); return hash; / /*/ Pearson's Hash / char pearson(charkey, ub4 len, char tab25
6、6) / / char hash; / ub4 i; / for (hash=len, i=0; i<len; +i) / hash=tabhashkeyi; / return (hash); / /*/ CRC Hashing,計(jì)算crc,具體代碼見(jiàn)其他 / ub4 crc(char *key, ub4 len, ub4 mask, ub4 tab256) / / ub4 hash, i; / for (hash=len, i=0; i<len; +i) / hash = (hash >> 8) tab(hash & 0xff) keyi; / return
7、(hash & mask); / /*/* Universal Hashing*/ public static int universal(charkey, int mask, int tab) int hash = key.length, i, len = key.length; for (i=0; i<(len<<3); i+=8) char k = keyi>>3; if (k&0x01) = 0) hash = tabi+0; if (k&0x02) = 0) hash = tabi+1; if (k&0x04) = 0)
8、hash = tabi+2; if (k&0x08) = 0) hash = tabi+3; if (k&0x10) = 0) hash = tabi+4; if (k&0x20) = 0) hash = tabi+5; if (k&0x40) = 0) hash = tabi+6; if (k&0x80) = 0) hash = tabi+7; return (hash & mask); /*/* Zobrist Hashing*/ public static int zobrist( char key,int mask, int tab) i
9、nt hash, i; for (hash=key.length, i=0; i<key.length; +i) hash = tabikeyi; return (hash & mask); / LOOKUP3 / 見(jiàn)Bob Jenkins(3).c文件 / 32位FNV算法 static int M_SHIFT = 0; /*/* 32位的FNV算法* param data 數(shù)組* return int值*/ public static int FNVHash(byte data) int hash = (int)2166136261L; for(byte b : data)
10、hash = (hash * 16777619) b; if (M_SHIFT = 0) return hash; return (hash (hash >> M_SHIFT) & M_MASK; /*/* 改進(jìn)的32位FNV算法1* param data 數(shù)組* return int值*/ public static int FNVHash1(byte data) final int p = 16777619; int hash = (int)2166136261L; for(byte b:data) hash = (hash b) * p; hash += hash &
11、lt;< 13; hash = hash >> 7; hash += hash << 3; hash = hash >> 17; hash += hash << 5; return hash; /*/* 改進(jìn)的32位FNV算法1* param data 字符串* return int值*/ public static int FNVHash1(String data) final int p = 16777619; int hash = (int)2166136261L; for(int i=0;i<data.length();i+)
12、 hash = (hash data.charAt(i) * p; hash += hash << 13; hash = hash >> 7; hash += hash << 3; hash = hash >> 17; hash += hash << 5; return hash; /*/* Thomas Wang的算法,整數(shù)hash*/ public static int intHash(int key) key += (key << 15); key = (key >>> 10); key += (k
13、ey << 3); key = (key >>> 6); key += (key << 11); key = (key >>> 16); return key; /*/* RS算法hash* param str 字符串*/ public static int RSHash(String str) int b = 378551; int a = 63689; int hash = 0; for(int i = 0; i < str.length(); i+) hash = hash * a + str.charAt(i); a =
14、 a * b; return (hash & 0x7FFFFFFF); /*/* End Of RS Hash Function */ /*/* JS算法*/ public static int JSHash(String str) int hash = 1315423911; for(int i = 0; i < str.length(); i+) hash = (hash << 5) + str.charAt(i) + (hash >> 2); return (hash & 0x7FFFFFFF); /*/* End Of JS Hash Fu
15、nction */ /*/* PJW算法*/ public static int PJWHash(String str) int BitsInUnsignedInt = 32; int ThreeQuarters = (BitsInUnsignedInt * 3) / 4; int OneEighth = BitsInUnsignedInt / 8; int HighBits = 0xFFFFFFFF << (BitsInUnsignedInt - OneEighth); int hash = 0; int test = 0; for(int i = 0; i < str.l
16、ength();i+) hash = (hash << OneEighth) + str.charAt(i); if(test = hash & HighBits) != 0) hash = ( hash (test >> ThreeQuarters) & (HighBits); return (hash & 0x7FFFFFFF); /*/* End Of P. J. Weinberger Hash Function */ /*/* ELF算法*/ public static int ELFHash(String str) int hash =
17、 0; int x = 0; for(int i = 0; i < str.length(); i+) hash = (hash << 4) + str.charAt(i); if(x = (int)(hash & 0xF0000000L) != 0) hash = (x >> 24); hash &= x; return (hash & 0x7FFFFFFF); /*/* End Of ELF Hash Function */ /*/* BKDR算法*/ public static int BKDRHash(String str) int
18、 seed = 131; / 31 131 1313 13131 131313 etc. int hash = 0; for(int i = 0; i < str.length(); i+) hash = (hash * seed) + str.charAt(i); return (hash & 0x7FFFFFFF); /*/* End Of BKDR Hash Function */ /*/* SDBM算法*/ public static int SDBMHash(String str) int hash = 0; for(int i = 0; i < str.leng
19、th(); i+) hash = str.charAt(i) + (hash << 6) + (hash << 16) - hash; return (hash & 0x7FFFFFFF); /*/* End Of SDBM Hash Function */ /*/* DJB算法*/ public static int DJBHash(String str) int hash = 5381; for(int i = 0; i < str.length(); i+) hash = (hash << 5) + hash) + str.charAt(i); return (hash & 0x7FFFFFFF); /*/* End Of DJB Hash Function */ /*/* DEK算法*/ public static int DEKHash(String str) int hash = str.length(); for(int i = 0; i < str.length(); i+) hash = (hash << 5) (hash >> 27) str.charAt(i); return (hash & 0x7FFFFFFF); /*/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 車(chē)輛轉(zhuǎn)讓與車(chē)輛檢測(cè)報(bào)告及維修保養(yǎng)服務(wù)合同
- 采棉機(jī)作業(yè)與棉花種植項(xiàng)目投資合同
- 電梯低頻噪音維修方案
- 泡水漏水考試題及答案
- 車(chē)位產(chǎn)權(quán)明確買(mǎi)賣(mài)及車(chē)位租賃及維修合同
- 獸醫(yī)門(mén)診面試題及答案
- 冷庫(kù)搬運(yùn)服務(wù)外包方案
- 2026版《全品高考》選考復(fù)習(xí)方案生物0419 課時(shí)作業(yè)(十八) 減數(shù)分裂與有絲分裂的比較 含答案
- 胸膜腫瘤CT表現(xiàn)與鑒別診斷
- 舞室運(yùn)營(yíng)方案模板
- 2025年湖南省中考?xì)v史試卷真題(含答案解析)
- 小學(xué)音標(biāo)題目及答案
- 2024年宿州蕭縣縣直事業(yè)單位招聘真題
- 休閑陽(yáng)臺(tái)沙發(fā)區(qū)創(chuàng)新創(chuàng)業(yè)項(xiàng)目商業(yè)計(jì)劃書(shū)
- 2025河南省豫地科技集團(tuán)有限公司社會(huì)招聘169人筆試參考題庫(kù)附帶答案詳解
- 木耳采購(gòu)合同協(xié)議書(shū)范本
- 快遞分揀人力承包協(xié)議書(shū)
- 醫(yī)學(xué)主任醫(yī)師晉升答辯
- ISO27001:2022信息安全管理手冊(cè)+全套程序文件+表單
- 給酒店供應(yīng)早餐合同協(xié)議
- FSSC22000ISO22000標(biāo)準(zhǔn)課程培訓(xùn)試題含答案
評(píng)論
0/150
提交評(píng)論