青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

不會飛的鳥

2010年12月10日 ... 不鳥他們!!! 我要用自己開發的分布式文件系統、分布式調度系統、分布式檢索系統, 做自己的搜索引擎!!!大魚有大志!!! ---楊書童

各種字符串Hash函數比較

常用的字符串Hash函數還有ELFHash,APHash等等,都是十分簡單有效的方法。這些函數使用位運算使得每一個字符都對最后的函數值產生影響。另外還有以MD5和SHA1為代表的雜湊函數,這些函數幾乎不可能找到碰撞。

常用字符串哈希函數有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。對于以上幾種哈希函數,我對其進行了一個小小的評測。

Hash函數數據1數據2數據3數據4數據1得分數據2得分數據3得分數據4得分平均分
BKDRHash20477448196.5510090.9582.0592.64
APHash23475449396.5588.4610051.2886.28
DJBHash22497547496.5592.31010083.43
JSHash14476150610084.6296.8317.9581.94
RSHash10486150510010051.5820.5175.96
SDBMHash32484950493.192.3157.0123.0872.41
PJWHash302648785130043.89021.95
ELFHash302648785130043.89021.95

其中數據1為100000個字母和數字組成的隨機串哈希沖突個數。數據2為100000個有意義的英文句子哈希沖突個數。數據3為數據1的哈希值與1000003(大素數)求模后存儲到線性表中沖突的個數。數據4為數據1的哈希值與10000019(更大素數)求模后存儲到線性表中沖突的個數。

經過比較,得出以上平均得分。平均數為平方平均數。可以發現,BKDRHash無論是在實際效果還是編碼實現中,效果都是最突出的。APHash也是較為優秀的算法。DJBHash,JSHash,RSHash與SDBMHash各有千秋。PJWHash與ELFHash效果最差,但得分相似,其算法本質是相似的。

在信息修競賽中,要本著易于編碼調試的原則,個人認為BKDRHash是最適合記憶和使用的。

BYVoid原創,歡迎建議、交流、批評和指正。

附:各種哈希函數的C語言程序代碼

unsigned int SDBMHash(char *str)
{
    unsigned 
int hash = 0;

    
while (*str)
    {
        
// equivalent to: hash = 65599*hash + (*str++);
        hash = (*str+++ (hash << 6+ (hash << 16- hash;
    }

    
return (hash & 0x7FFFFFFF);
}

// RS Hash Function
unsigned int RSHash(char *str)
{
    unsigned 
int b = 378551;
    unsigned 
int a = 63689;
    unsigned 
int hash = 0;

    
while (*str)
    {
        hash 
= hash * a + (*str++);
        a 
*= b;
    }

    
return (hash & 0x7FFFFFFF);
}

// JS Hash Function
unsigned int JSHash(char *str)
{
    unsigned 
int hash = 1315423911;

    
while (*str)
    {
        hash 
^= ((hash << 5+ (*str+++ (hash >> 2));
    }

    
return (hash & 0x7FFFFFFF);
}

// P. J. Weinberger Hash Function
unsigned int PJWHash(char *str)
{
    unsigned 
int BitsInUnignedInt = (unsigned int)(sizeof(unsigned int* 8);
    unsigned 
int ThreeQuarters    = (unsigned int)((BitsInUnignedInt  * 3/ 4);
    unsigned 
int OneEighth        = (unsigned int)(BitsInUnignedInt / 8);
    unsigned 
int HighBits         = (unsigned int)(0xFFFFFFFF<< (BitsInUnignedInt - OneEighth);
    unsigned 
int hash             = 0;
    unsigned 
int test             = 0;

    
while (*str)
    {
        hash 
= (hash << OneEighth) + (*str++);
        
if ((test = hash & HighBits) != 0)
        {
            hash 
= ((hash ^ (test >> ThreeQuarters)) & (~HighBits));
        }
    }

    
return (hash & 0x7FFFFFFF);
}

// ELF Hash Function
unsigned int ELFHash(char *str)
{
    unsigned 
int hash = 0;
    unsigned 
int x    = 0;

    
while (*str)
    {
        hash 
= (hash << 4+ (*str++);
        
if ((x = hash & 0xF0000000L!= 0)
        {
            hash 
^= (x >> 24);
            hash 
&= ~x;
        }
    }

    
return (hash & 0x7FFFFFFF);
}

// BKDR Hash Function
unsigned int BKDRHash(char *str)
{
    unsigned 
int seed = 131// 31 131 1313 13131 131313 etc..
    unsigned int hash = 0;

    
while (*str)
    {
        hash 
= hash * seed + (*str++);
    }

    
return (hash & 0x7FFFFFFF);
}

// DJB Hash Function
unsigned int DJBHash(char *str)
{
    unsigned 
int hash = 5381;

    
while (*str)
    {
        hash 
+= (hash << 5+ (*str++);
    }

    
return (hash & 0x7FFFFFFF);
}

// AP Hash Function
unsigned int APHash(char *str)
{
    unsigned 
int hash = 0;
    
int i;

    
for (i=0*str; i++)
    {
        
if ((i & 1== 0)
        {
            hash 
^= ((hash << 7^ (*str++^ (hash >> 3));
        }
        
else
        {
            hash 
^= (~((hash << 11^ (*str++^ (hash >> 5)));
        }
    }

    
return (hash & 0x7FFFFFFF);
}

posted on 2014-11-10 19:53 不會飛的鳥 閱讀(855) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美视频一区二区三区| 亚洲在线网站| 在线观看日韩av电影| 欧美成人精品一区| 久久精品在这里| 欧美一区1区三区3区公司| 一区精品在线播放| 国产亚洲精品v| 激情五月婷婷综合| 国语自产精品视频在线看一大j8| 欧美全黄视频| 欧美日韩在线播放| 国产精品xxx在线观看www| 欧美国产日韩免费| 亚洲一区二区三区视频播放| 欧美在线观看视频一区二区三区| 一本色道久久综合亚洲精品婷婷| 亚洲女女做受ⅹxx高潮| 国产自产精品| 亚洲国产精品一区二区久 | 亚洲一级片在线看| 中文久久精品| 亚洲综合色丁香婷婷六月图片| 亚洲黄页视频免费观看| 在线一区二区三区四区| av成人黄色| 蜜桃av一区二区三区| 亚洲国产精品国自产拍av秋霞| 久久综合久久美利坚合众国| 亚洲国产色一区| 欧美一区二区三区免费在线看 | 亚洲欧美在线视频观看| 午夜视频精品| 亚洲人被黑人高潮完整版| 亚洲欧美日韩久久精品| 蜜桃av久久久亚洲精品| 国产小视频国产精品| 性久久久久久| 国产精品视频午夜| 国产精品99久久久久久久女警| 久久久之久亚州精品露出| 99热在线精品观看| 欧美日韩综合精品| 在线一区二区三区四区五区| 亚洲第一页自拍| 久久久久久69| 亚洲风情亚aⅴ在线发布| 久久久久一区二区三区| 久久久噜噜噜久久狠狠50岁| 欧美国产日韩在线| 国产麻豆9l精品三级站| 亚洲欧美日韩第一区| 亚洲性图久久| 国内揄拍国内精品少妇国语| 久久国产毛片| 欧美国产在线观看| 亚洲欧美日韩国产一区二区三区| 夜夜精品视频一区二区| 国产精品大片wwwwww| 久久激情网站| 免费观看一级特黄欧美大片| 亚洲乱码一区二区| 一区二区三区www| 狠狠色狠狠色综合| 一区二区福利| 亚洲伦理一区| 久久久亚洲高清| 亚洲综合清纯丝袜自拍| 美女国产精品| 久久精品免费观看| 欧美国产先锋| 欧美国产精品中文字幕| 亚洲激情影视| 国产亚洲精久久久久久| 一本色道久久综合亚洲精品高清| 激情成人在线视频| 午夜精品久久久久久久久久久| 日韩一级精品| 欧美激情乱人伦| 欧美激情按摩在线| 91久久极品少妇xxxxⅹ软件| 午夜免费在线观看精品视频| 亚洲免费观看| 欧美日韩福利| 99这里只有精品| 亚洲欧美在线一区二区| 欧美日韩中文字幕精品| 艳女tv在线观看国产一区| 亚洲天堂av在线免费| 欧美视频一二三区| 亚洲欧美一区二区三区极速播放| 在线午夜精品| 国产午夜亚洲精品不卡| 久久久久青草大香线综合精品| 免费欧美在线视频| 一本色道久久综合亚洲二区三区 | 亚洲大片一区二区三区| 久久久免费av| 亚洲精品日产精品乱码不卡| 夜夜夜久久久| 极品裸体白嫩激情啪啪国产精品| 美女黄毛**国产精品啪啪| 亚洲欧洲精品一区二区三区不卡 | 久久网站免费| 欧美成人激情在线| 午夜久久久久| 中文日韩欧美| 99re这里只有精品6| 欧美成年人网站| 久久精品一本| 久久se精品一区二区| 一区二区三区久久| 亚洲乱码一区二区| 亚洲国产一二三| 在线观看成人av电影| 国产欧美一区二区精品秋霞影院| 欧美日本在线一区| 欧美国产日本在线| 久久综合激情| 免费h精品视频在线播放| 亚洲你懂的在线视频| 亚洲视频狠狠| 亚洲综合国产激情另类一区| 一区二区日本视频| 一区二区三区高清不卡| 亚洲精品日韩精品| 亚洲毛片在线看| 亚洲免费视频成人| 欧美亚洲视频| 欧美大片一区| 国产精品啊啊啊| 国产欧美日韩亚州综合| 韩日欧美一区二区三区| 一本大道久久a久久精品综合| 99精品国产高清一区二区| 亚洲伊人观看| 欧美h视频在线| 制服丝袜亚洲播放| 久久综合久久久久88| 欧美日韩激情小视频| 国产性做久久久久久| 亚洲日本视频| 欧美在线三级| 一本色道久久综合亚洲精品婷婷| 欧美一区二区三区在线视频 | 欧美日韩国产综合一区二区| 国产精品高潮在线| 亚洲每日更新| 欧美第一黄色网| 欧美综合二区| 极品少妇一区二区| 久久久91精品国产| 性伦欧美刺激片在线观看| 欧美日韩免费看| 精品成人在线观看| 久久国产精品第一页| 在线亚洲观看| 国产麻豆日韩欧美久久| 日韩网站在线看片你懂的| 久久资源av| 久久永久免费| 亚洲久久一区二区| 在线视频日韩| 国产亚洲精品久久飘花| 久久综合久久久| 欧美国产激情| 亚洲一区二区三区三| 夜夜嗨av一区二区三区网页| 国产精品成人在线| 亚洲字幕一区二区| 久久av在线看| 一区二区三区久久精品| 亚洲一区三区在线观看| 国产尤物精品| 91久久精品国产91久久性色tv| 牛牛影视久久网| 欧美一区二区三区视频| 久久精品日产第一区二区| 在线观看一区欧美| 亚洲最新视频在线| 一区二区在线视频| 9l视频自拍蝌蚪9l视频成人| 加勒比av一区二区| 亚洲午夜一区二区三区| 最新国产乱人伦偷精品免费网站| 亚洲免费视频在线观看| 亚洲精品欧美日韩| 欧美一区二区三区在线观看| 99国产精品国产精品久久| 亚洲私拍自拍| 久久久噜噜噜久久狠狠50岁| 韩国女主播一区二区三区| 亚洲美洲欧洲综合国产一区| 黄色av一区| 欧美亚洲日本一区| 久久成人久久爱| 国产精品久久久久久久久久免费看 | 国产欧美欧美| 在线综合亚洲| 亚洲性图久久|