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

無我

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

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 閱讀(2681) 評論(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
來源:www.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>
            欧美精品激情在线| 欧美午夜一区二区三区免费大片| 激情久久久久久| 久久国产精品久久国产精品| 亚洲欧美中文日韩v在线观看| 国产精品高潮粉嫩av| 亚洲欧美一区二区三区在线| 亚洲免费网址| 狠狠色伊人亚洲综合网站色| 欧美成人在线影院| 欧美日韩午夜剧场| 午夜影院日韩| 久久久久久夜| 日韩一级不卡| 小黄鸭精品aⅴ导航网站入口| 国产欧美日本一区二区三区| 久久精品国产亚洲高清剧情介绍| 久久偷窥视频| 一区二区三区四区精品| 亚洲自拍啪啪| 亚洲国产欧美一区二区三区丁香婷| 亚洲国产欧美久久| 欧美午夜精品久久久久久超碰| 欧美有码视频| 欧美另类一区| 久久成人在线| 欧美日本亚洲韩国国产| 久久国产精品99国产精| 欧美精品久久久久久久免费观看 | 国产精品www色诱视频| 欧美一级淫片aaaaaaa视频| 久久亚洲综合色一区二区三区| av成人国产| 久久精品女人| 亚洲男同1069视频| 欧美69wwwcom| 久色成人在线| 国产乱码精品一区二区三区av| 亚洲国产成人不卡| 国产午夜精品美女毛片视频| 亚洲人成网站在线播| 狠狠久久亚洲欧美| 亚洲一区二区三区精品在线| 亚洲精品麻豆| 久久亚洲精品伦理| 久久国产一区二区| 国产精品成人免费视频 | 亚洲一区二区三区免费观看| 久久人人九九| 久久影院亚洲| 国产亚洲福利| 亚洲男人av电影| 在线午夜精品| 欧美成人有码| 欧美国产日本高清在线| 韩国精品在线观看| 欧美伊人久久大香线蕉综合69| 午夜精品99久久免费| 欧美日韩免费观看一区| 亚洲激情视频| 亚洲美女av黄| 欧美激情影音先锋| 91久久午夜| 一区二区三区**美女毛片| 欧美黑人在线观看| 亚洲成人在线网站| 亚洲国产日韩欧美综合久久| 裸体女人亚洲精品一区| 欧美凹凸一区二区三区视频| 在线观看精品视频| 老司机久久99久久精品播放免费| 欧美成人激情视频免费观看| 亚洲国产精品电影在线观看| 久久久夜精品| 亚洲国产精品黑人久久久| 亚洲精品你懂的| 欧美日韩国内自拍| 亚洲一区视频| 久久免费少妇高潮久久精品99| 国产一区二区激情| 久久婷婷国产麻豆91天堂| 欧美激情一区二区在线 | 国产精品天美传媒入口| 亚洲综合视频网| 久久久www成人免费无遮挡大片| 国产专区一区| 欧美电影打屁股sp| 亚洲一级免费视频| 乱人伦精品视频在线观看| 亚洲国产精品黑人久久久| 欧美精品三级| 亚洲免费婷婷| 欧美激情一二三区| 亚洲午夜精品在线| 激情亚洲成人| 欧美日韩高清在线| 性欧美xxxx视频在线观看| 母乳一区在线观看| 亚洲欧美在线aaa| 精品成人免费| 国产精品久久国产三级国电话系列| 性久久久久久久久| 亚洲第一二三四五区| 欧美在线观看视频一区二区三区 | 国产欧美欧美| 欧美不卡视频一区| 亚洲综合日韩| 91久久午夜| 久久最新视频| 亚洲在线视频一区| 最新亚洲一区| 国产亚洲一区二区三区在线观看 | 亚洲天堂网在线观看| 奶水喷射视频一区| 欧美一级在线播放| 亚洲四色影视在线观看| 极品尤物av久久免费看| 国产精品久久久久久久久久ktv| 老鸭窝91久久精品色噜噜导演| 亚洲一区二区在线播放| 欧美激情一区二区三区在线视频观看 | 国产欧美日韩在线播放| 欧美高清一区| 久久夜色精品亚洲噜噜国产mv| 亚洲视频在线看| 亚洲免费播放| 亚洲国产精品成人va在线观看| 久久久久久**毛片大全| 欧美一区二区三区在线观看视频| 日韩亚洲欧美成人| 亚洲三级国产| 在线观看国产成人av片| 韩日视频一区| 国产最新精品精品你懂的| 国产美女扒开尿口久久久| 国产精品sss| 欧美色精品天天在线观看视频 | 中文一区在线| 亚洲精品在线免费| 亚洲伦理自拍| 亚洲全部视频| 亚洲日本在线观看| 亚洲国产精品久久久久| 欧美国产免费| 亚洲高清不卡av| 亚洲国产精品毛片| 亚洲欧洲在线看| av成人动漫| 亚洲视频一区二区免费在线观看| 日韩一区二区精品| 一本大道久久精品懂色aⅴ | 免费久久99精品国产自在现线| 久久久久久一区| 免费永久网站黄欧美| 欧美jjzz| 亚洲欧洲美洲综合色网| 99在线热播精品免费| 99国产精品99久久久久久粉嫩| 一区二区av在线| 亚洲影院色无极综合| 欧美一区二区| 久久亚洲不卡| 欧美精品v国产精品v日韩精品| 欧美日韩国产综合视频在线观看中文| 欧美性大战久久久久| 国产精品激情电影| 国产一区二区三区在线观看精品 | 亚洲缚视频在线观看| 亚洲日本理论电影| 亚洲午夜伦理| 久久永久免费| 日韩图片一区| 久久久国产一区二区三区| 麻豆久久婷婷| 欧美亚洲第一区| 一区精品在线| 亚洲午夜视频在线观看| 久久裸体视频| 亚洲看片网站| 欧美一区在线直播| 欧美精品亚洲精品| 国产三级精品三级| 妖精成人www高清在线观看| 午夜视黄欧洲亚洲| 欧美护士18xxxxhd| 午夜精品久久久久久久久| 美女网站久久| 国产精品中文在线| 99re6这里只有精品视频在线观看| 欧美一区二区三区在线| 91久久精品一区二区三区| 亚洲女人天堂成人av在线| 欧美成年人视频网站| 国产欧美日韩综合精品二区| 日韩一级黄色大片| 免费成人av在线看| 欧美一区三区二区在线观看| 欧美视频中文一区二区三区在线观看 | 91久久在线观看| 久久国产精品一区二区|