-
大小: 3KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-09
- 語(yǔ)言: 其他
- 標(biāo)簽: bloomFilter??hash函數(shù)??
資源簡(jiǎn)介
該文檔中包含 bloomFilter過(guò)濾器中用到的對(duì)于字符串進(jìn)行hash的hash函數(shù)共十一個(gè),并帶有測(cè)試程序..

代碼片段和文件信息
#include?“GeneralHashFunctions.h“
unsigned?int?RSHash(char*?str?unsigned?int?len)
{
???unsigned?int?b????=?378551;
???unsigned?int?a????=?63689;
???unsigned?int?hash?=?0;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?=?hash?*?a?+?(*str);
??????a????=?a?*?b;
???}
???return?hash;
}
/*?End?Of?RS?Hash?Function?*/
unsigned?int?JSHash(char*?str?unsigned?int?len)
{
???unsigned?int?hash?=?1315423911;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?^=?((hash?<5)?+?(*str)?+?(hash?>>?2));
???}
???return?hash;
}
/*?End?Of?JS?Hash?Function?*/
unsigned?int?PJWHash(char*?str?unsigned?int?len)
{
???const?unsigned?int?BitsInUnsignedInt?=?(unsigned?int)(sizeof(unsigned?int)?*?8);
???const?unsigned?int?ThreeQuarters?????=?(unsigned?int)((BitsInUnsignedInt??*?3)?/?4);
???const?unsigned?int?OneEighth?????????=?(unsigned?int)(BitsInUnsignedInt?/?8);
???const?unsigned?int?HighBits??????????=?(unsigned?int)(0xFFFFFFFF)?<(BitsInUnsignedInt?-?OneEighth);
???unsigned?int?hash??????????????=?0;
???unsigned?int?test??????????????=?0;
???unsigned?int?i?????????????????=?0;
???for(i?=?0;?i????{
??????hash?=?(hash?<
??????if((test?=?hash?&?HighBits)??!=?0)
??????{
?????????hash?=?((?hash?^?(test?>>?ThreeQuarters))?&?(~HighBits));
??????}
???}
???return?hash;
}
/*?End?Of??P.?J.?Weinberger?Hash?Function?*/
unsigned?int?ELFHash(char*?str?unsigned?int?len)
{
???unsigned?int?hash?=?0;
???unsigned?int?x????=?0;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?=?(hash?<4)?+?(*str);
??????if((x?=?hash?&?0xF0000000L)?!=?0)
??????{
?????????hash?^=?(x?>>?24);
??????}
??????hash?&=?~x;
???}
???return?hash;
}
/*?End?Of?ELF?Hash?Function?*/
unsigned?int?BKDRHash(char*?str?unsigned?int?len)
{
???unsigned?int?seed?=?131;?/*?31?131?1313?13131?131313?etc..?*/
???unsigned?int?hash?=?0;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?=?(hash?*?seed)?+?(*str);
???}
???return?hash;
}
/*?End?Of?BKDR?Hash?Function?*/
unsigned?int?SDBMHash(char*?str?unsigned?int?len)
{
???unsigned?int?hash?=?0;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?=?(*str)?+?(hash?<6)?+?(hash?<16)?-?hash;
???}
???return?hash;
}
/*?End?Of?SDBM?Hash?Function?*/
unsigned?int?DJBHash(char*?str?unsigned?int?len)
{
???unsigned?int?hash?=?5381;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?=?((hash?<5)?+?hash)?+?(*str);
???}
???return?hash;
}
/*?End?Of?DJB?Hash?Function?*/
unsigned?int?DEKHash(char*?str?unsigned?int?len)
{
???unsigned?int?hash?=?len;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
??????hash?=?((hash?<5)?^?(hash?>>?27))?^?(*str);
???}
???return?hash;
}
/*?End?Of?DEK?Hash?Function?*/
unsigned?int?BPHash(char*?str?unsigned?int?len)
{
???unsigned?int?hash?=?0;
???unsigned?int?i????=?0;
???for(i?=?0;?i????{
?????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3742??2008-06-09?20:29??GeneralHashFunctions_-_C\GeneralHashFunctions.c
?????文件???????1899??2000-01-01?01:00??GeneralHashFunctions_-_C\GeneralHashFunctions.h
?????文件???????2231??2000-01-01?01:00??GeneralHashFunctions_-_C\HashTest.c
?????文件????????801??2000-01-01?01:00??GeneralHashFunctions_-_C\Makefile
????..AD...?????????0??2009-03-21?20:00??GeneralHashFunctions_-_C
-----------?---------??----------?-----??----
?????????????????8673????????????????????5
- 上一篇:給BMP圖像添加水印
- 下一篇:SPI總線操作時(shí)序詳解
評(píng)論
共有 條評(píng)論