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

無我

讓內心永遠燃燒著偉大的光明的精神之火!
靈活的思考,嚴謹的實現
豪邁的氣魄、頑強的意志和周全的思考

hash函數——djb2、sdbm、lose lose

本文內容轉自于http://www.cse.yorku.ca/~oz/hash.html。因為他對給出了幾個非常好的hash函數,而其中的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 閱讀(2666) 評論(1)  編輯 收藏 引用 所屬分類: C/C++語言

評論

# re: hash函數——djb2、sdbm、lose lose[未登錄] 2012-04-27 09:35 Tina

頂!  回復  更多評論   

<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

導航

統計

公告

本博客原創文章,歡迎轉載和交流。不過請注明以下信息:
作者:TimWu
郵箱:timfly@yeah.net
來源:m.shnenglu.com/Tim
感謝您對我的支持!

留言簿(9)

隨筆分類(173)

IT

Life

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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人在线观看导航| 欧美一级淫片aaaaaaa视频| 欧美日韩美女| 一区二区三区蜜桃网| 欧美高清视频www夜色资源网| 久久久综合视频| 黄色亚洲免费| 亚洲国产精品电影| 欧美三区在线视频| 久久青草欧美一区二区三区| 麻豆精品一区二区综合av| 日韩午夜激情电影| 小辣椒精品导航| 日韩午夜剧场| 久久久久国产精品一区| 一区二区三区|亚洲午夜| 性欧美8khd高清极品| 亚洲三级性片| 久久精品水蜜桃av综合天堂| 一区二区免费在线视频| 久久精品2019中文字幕| 亚洲综合日韩在线| 麻豆免费精品视频| 久久精品国内一区二区三区| 欧美极品色图| 亚洲福利视频在线| 国产永久精品大片wwwapp| aa级大片欧美| 亚洲影视中文字幕| 欧美日韩视频第一区| 鲁大师影院一区二区三区| 欧美成人久久| 国产精品乱码久久久久久| 亚洲国产日韩在线一区模特| 国自产拍偷拍福利精品免费一| 一区二区三区蜜桃网| 亚洲视频免费| 欧美激情国产高清| 亚洲国产高清高潮精品美女| 毛片一区二区| 日韩视频免费看| 亚洲欧美精品中文字幕在线| 欧美午夜精品久久久久久孕妇 | 欧美日本亚洲| 夜夜嗨网站十八久久 | 亚洲伊人网站| 欧美日韩亚洲一区二区| 亚洲视频一区二区| 欧美影院成人| 亚洲欧洲精品一区| 国产精品日韩久久久久| 久久婷婷久久| 亚洲欧美日本伦理| 亚洲乱码日产精品bd| 欧美制服第一页| 91久久精品美女| 国产一区二区三区网站| 欧美成人中文| 久久精品二区亚洲w码| 99精品免费网| 欧美激情国产日韩| 久久久综合网站| 亚洲欧美一区二区视频| 亚洲欧洲在线观看| 国产精品视频不卡| 狂野欧美一区| 亚洲欧美日本另类| 亚洲高清毛片| 亚洲资源av| 午夜欧美视频| 亚洲一卡久久| 夜夜爽夜夜爽精品视频| 精品1区2区3区4区| 欧美日韩少妇| 欧美日韩在线观看视频| 99视频有精品| 亚洲国产精品成人综合色在线婷婷 | 美女日韩在线中文字幕| 亚洲欧美日韩网| 亚洲人成网站在线观看播放| 经典三级久久| 亚洲福利专区| 亚洲精品日韩久久| 久久九九国产精品| 日韩视频专区| 欧美一级免费视频| 欧美在线综合| 巨乳诱惑日韩免费av| 久久综合色婷婷| 亚洲国产激情| 欧美激情欧美狂野欧美精品| 亚洲黄色在线| 国产精品99久久久久久白浆小说| 宅男66日本亚洲欧美视频| 午夜精品视频在线观看| 久久精品最新地址| 欧美美女操人视频| 国产精品呻吟| 亚洲福利视频专区| 亚洲精品欧美一区二区三区| 国产一区在线看| 99ri日韩精品视频| 久久国产乱子精品免费女| 亚洲大胆人体视频| 亚洲欧美成人网| 欧美国产日本在线| 狠狠色综合网站久久久久久久| 亚洲国产高潮在线观看| 久久亚洲影音av资源网| 亚洲私人影吧| 欧美日本久久| 亚洲精品男同| 国产日韩欧美另类| 亚洲美女视频在线观看| 亚洲欧洲另类国产综合| 亚洲一区二区伦理| 亚洲第一精品夜夜躁人人爽 | 欧美成人精品激情在线观看| 国产精品二区三区四区| 99精品免费视频| 欧美成人免费全部| 久久久久久**毛片大全| 国语精品中文字幕| 欧美日韩在线视频一区二区| 久久久久国色av免费观看性色| 在线亚洲美日韩| 欧美顶级少妇做爰| 巨乳诱惑日韩免费av| 狠狠综合久久| 欧美激情精品久久久久久大尺度| 午夜日韩在线观看| 国产日韩亚洲欧美精品| 久久―日本道色综合久久| 久久婷婷国产麻豆91天堂| 亚洲国产欧美日韩| 亚洲国产精品一区二区尤物区| 欧美激情精品久久久六区热门 | 国产午夜精品一区二区三区欧美| 亚洲一区精品视频| 欧美一级大片在线观看| 一区二区视频欧美| 亚洲人成绝费网站色www| 国产精品日日摸夜夜添夜夜av| 久久精品一区二区国产| 欧美人与禽猛交乱配视频| 亚洲一级在线| 久久综合久色欧美综合狠狠 | 亚洲影院在线| 亚洲欧洲一二三| 欧美中文字幕精品| 亚洲一区二区三区久久| 欧美怡红院视频| 欧美精品日韩三级| 老司机成人网| 国产精品乱看| 亚洲欧洲综合另类在线| 狠狠色综合一区二区| 一区二区三区视频观看| 亚洲精品123区| 久久在线视频在线| 久久一区二区三区四区五区| 国产精品欧美日韩久久| 亚洲精品中文字幕女同| 亚洲国产三级在线| 嫩模写真一区二区三区三州| 久久精品国产亚洲5555| 国产日本欧美在线观看| 午夜国产欧美理论在线播放| 午夜在线视频观看日韩17c| 欧美日韩中文另类| 亚洲私人影院在线观看| 香蕉成人伊视频在线观看| 国产精品欧美风情| 欧美伊人久久| ●精品国产综合乱码久久久久| 久久久www免费人成黑人精品| 久久久精品国产免大香伊 | 99亚洲一区二区| 99精品黄色片免费大全| 欧美日韩一区二区视频在线| 日韩午夜激情av| 久久国产一区| 亚洲精品无人区| 国产精品久久久久久久久久久久久| 一区二区三区|亚洲午夜| 久久久久久久一区二区| 亚洲国产精品ⅴa在线观看| 欧美成人首页| 亚洲综合日韩中文字幕v在线| 蜜桃av一区| 午夜日韩在线| 亚洲一区综合| 日韩午夜av电影| 亚洲大片免费看| 国产亚洲a∨片在线观看|