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

無(wú)我

讓內(nèi)心永遠(yuǎn)燃燒著偉大的光明的精神之火!
靈活的思考,嚴(yán)謹(jǐn)?shù)膶?shí)現(xiàn)
豪邁的氣魄、頑強(qiáng)的意志和周全的思考

hash函數(shù)——djb2、sdbm、lose lose

本文內(nèi)容轉(zhuǎn)自于http://www.cse.yorku.ca/~oz/hash.html。因?yàn)樗麑?duì)給出了幾個(gè)非常好的hash函數(shù),而其中的sdbm就是我們將剖析的eSNACC用的hash的原型。文章是英文的,但是通俗易懂,就摘錄在此了。

 

Hash Functions

A comprehensive collection of hash functions, a hash visualiser and some test results [see Mckenzie et al. Selecting a Hashing Algorithm, SP&E 20(2):209-224, Feb 1990] will be available someday. If you just want to have a good hash function, and cannot wait, djb2 is one of the best string hash functions i know. it has excellent distribution and speed on many different sets of keys and table sizes. you are not likely to do better with one of the "well known" functions such as PJW, K&R[1], etc. Also see tpop pp. 126 for graphing hash functions.


 

djb2

this algorithm (k=33) was first reported by dan bernstein many years ago in comp.lang.c. another version of this algorithm (now favored by bernstein) uses xor: hash(i) = hash(i - 1) * 33 ^ str[i]; the magic of number 33 (why it works better than many other constants, prime or not) has never been adequately explained.

    unsigned long
    hash(unsigned char *str)
    {
        unsigned long hash = 5381;
        int c;

        while (c = *str++)
            hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

        return hash;
    }


 

sdbm

this algorithm was created for sdbm (a public-domain reimplementation of ndbm) database library. it was found to do well in scrambling bits, causing better distribution of the keys and fewer splits. it also happens to be a good general hashing function with good distribution. the actual function is hash(i) = hash(i - 1) * 65599 + str[i]; what is included below is the faster version used in gawk. [there is even a faster, duff-device version] the magic constant 65599 was picked out of thin air while experimenting with different constants, and turns out to be a prime. this is one of the algorithms used in berkeley db (see sleepycat) and elsewhere.

    static unsigned long
    sdbm(str)
    unsigned char *str;
    {
        unsigned long hash = 0;
        int c;

        while (c = *str++)
            hash = c + (hash << 6) + (hash << 16) - hash;

        return hash;
    }

lose lose

This hash function appeared in K&R (1st ed) but at least the reader was warned: "This is not the best possible algorithm, but it has the merit of extreme simplicity." This is an understatement; It is a terrible hashing algorithm, and it could have been much better without sacrificing its "extreme simplicity." [see the second edition!] Many C programmers use this function without actually testing it, or checking something like Knuth's Sorting and Searching, so it stuck. It is now found mixed with otherwise respectable code, eg. cnews. sigh. [see also: tpop]

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

	while (c = *str++)
	    hash += c;

	return hash;
    }

 

 

posted on 2012-04-26 08:52 Tim 閱讀(2681) 評(píng)論(1)  編輯 收藏 引用 所屬分類: C/C++語(yǔ)言

評(píng)論

# re: hash函數(shù)——djb2、sdbm、lose lose[未登錄](méi) 2012-04-27 09:35 Tina

頂!  回復(fù)  更多評(píng)論   

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

公告

本博客原創(chuàng)文章,歡迎轉(zhuǎn)載和交流。不過(guò)請(qǐng)注明以下信息:
作者:TimWu
郵箱:timfly@yeah.net
來(lái)源:www.shnenglu.com/Tim
感謝您對(duì)我的支持!

留言簿(9)

隨筆分類(173)

IT

Life

搜索

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 中文在线资源观看网站视频免费不卡 | 猛男gaygay欧美视频| 久久九九精品99国产精品| 一色屋精品视频在线观看网站| 男男成人高潮片免费网站| 欧美电影免费观看大全| 亚洲免费观看高清在线观看| 亚洲另类在线视频| 国产精品夜色7777狼人| 久久视频一区二区| 欧美风情在线| 亚洲欧美一区二区视频| 久久精品99| 日韩一级不卡| 亚洲欧美视频在线观看视频| 国语自产在线不卡| 亚洲人体一区| 国产精品一级二级三级| 欧美xx69| 国产精品久久久久免费a∨| 久久亚洲综合色| 欧美日产国产成人免费图片| 欧美一区二区高清在线观看| 久热精品视频| 亚洲欧美一级二级三级| 巨乳诱惑日韩免费av| 亚洲欧美另类久久久精品2019| 久久精品国产亚洲精品| 中文国产一区| 葵司免费一区二区三区四区五区| 亚洲无限av看| 免播放器亚洲一区| 欧美一级成年大片在线观看| 猫咪成人在线观看| 久久精品91久久久久久再现| 欧美日韩三级视频| 麻豆久久精品| 国产麻豆日韩| 一本一本久久| 亚洲精品视频啊美女在线直播| 午夜精品理论片| 一区二区三区日韩精品| 久色婷婷小香蕉久久| 久久久福利视频| 国产精品嫩草影院一区二区| 亚洲精品久久久久久久久久久久 | 久久中文精品| 久久精品国亚洲| 欧美电影在线| 免费在线视频一区| 国产精品福利在线观看网址| 欧美 日韩 国产一区二区在线视频| 欧美日本二区| 亚洲国产综合视频在线观看| 好吊色欧美一区二区三区视频| 在线视频欧美日韩| 9久草视频在线视频精品| 老牛国产精品一区的观看方式| 久久国产欧美| 国产一区二区三区免费观看| 亚洲网站视频| 午夜精品久久久| 国产精品久久久久9999| 在线亚洲一区观看| 亚洲少妇自拍| 欧美婷婷在线| 中日韩美女免费视频网址在线观看| 日韩亚洲欧美成人| 亚洲午夜一二三区视频| 欧美麻豆久久久久久中文| 亚洲电影av| 夜夜夜久久久| 国产精品扒开腿爽爽爽视频| 正在播放欧美一区| 欧美一级网站| 国精品一区二区三区| 久久久999精品| 亚洲第一黄色| 亚洲美女在线看| 欧美网站在线观看| 新片速递亚洲合集欧美合集| 久久久久久欧美| 亚洲国产精品久久精品怡红院| 欧美77777| 日韩视频一区二区三区| 午夜综合激情| 一区二区在线观看av| 欧美福利网址| 亚洲免费在线视频| 美女精品国产| 亚洲天堂成人在线视频| 国产免费一区二区三区香蕉精| 久久成人精品电影| 亚洲国产精品久久人人爱蜜臀 | 欧美视频一二三区| 性欧美大战久久久久久久久| 免费毛片一区二区三区久久久| 亚洲精品一区在线观看香蕉| 欧美午夜理伦三级在线观看| 久久成人免费网| 日韩午夜在线观看视频| 久久精品卡一| 一区二区三区高清| 一区在线影院| 欧美亚洲成人免费| 美国三级日本三级久久99| 一区二区三区视频在线看| 欧美91大片| 久久aⅴ国产紧身牛仔裤| 91久久精品www人人做人人爽| 国产精品久久久久久超碰| 久久综合给合久久狠狠色| 亚洲一本视频| 亚洲精品欧美极品| 免费观看成人| 久久av在线| 亚洲影院污污.| 亚洲精品免费在线观看| 国产一区二区三区高清在线观看| 欧美人成在线视频| 久久人人爽爽爽人久久久| 亚洲欧美在线看| 一区二区三区四区国产| 亚洲国产精品久久久久| 久久久www免费人成黑人精品| 亚洲一区免费| 在线视频亚洲一区| 亚洲国产视频一区二区| 激情自拍一区| 国产视频一区在线| 国产精品自拍网站| 国产精品国产福利国产秒拍 | 亚洲特色特黄| 亚洲精品欧美一区二区三区| 欧美成人嫩草网站| 蘑菇福利视频一区播放| 久久久免费av| 久久久综合网| 久久亚洲图片| 久久亚洲国产成人| 久久久久国产成人精品亚洲午夜| 午夜激情亚洲| 欧美一区二区在线播放| 亚洲欧美日韩中文视频| 午夜视频一区| 欧美中文字幕视频在线观看| 欧美影院视频| 久久久高清一区二区三区| 久久裸体视频| 久久伊人精品天天| 欧美福利视频在线| 亚洲电影成人| 亚洲另类黄色| 中文精品99久久国产香蕉| 亚洲一区二区精品| 久久成人人人人精品欧| 久久性色av| 欧美日韩大片| 国产精品国产精品| 国产亚洲第一区| 亚洲国产高清aⅴ视频| 亚洲美女色禁图| 亚洲综合不卡| 久久亚洲国产精品一区二区| 欧美大片一区二区| 日韩亚洲不卡在线| 午夜激情一区| 免费不卡在线视频| 国产精品都在这里| 在线成人国产| 亚洲网站在线| 狂野欧美激情性xxxx欧美| 亚洲国产成人高清精品| 亚洲一区二区三区国产| 久久久久久9| 欧美视频日韩视频| 极品尤物久久久av免费看| av不卡在线| 久久久久国产精品麻豆ai换脸| 亚洲国产91精品在线观看| 亚洲一级免费视频| 欧美凹凸一区二区三区视频| 国产精品美女久久福利网站| 亚洲国产三级在线| 欧美一区二区三区精品| 欧美激情亚洲自拍| 欧美一级午夜免费电影| 欧美激情综合网| 国内精品美女在线观看| 亚洲视频国产视频| 欧美成人在线免费观看| 亚洲欧美日韩国产综合在线| 欧美国产在线观看| 在线欧美影院| 久久精品国产69国产精品亚洲 | 久久蜜桃av一区精品变态类天堂| 亚洲欧洲精品一区二区精品久久久|