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

無我

讓內(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 閱讀(2666) 評(píng)論(1)  編輯 收藏 引用 所屬分類: C/C++語言

評(píng)論

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

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

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

導(dǎo)航

統(tǒng)計(jì)

公告

本博客原創(chuàng)文章,歡迎轉(zhuǎn)載和交流。不過請(qǐng)注明以下信息:
作者:TimWu
郵箱:timfly@yeah.net
來源:m.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综合天堂| 久久一区二区三区国产精品| 亚洲欧美国产精品桃花| 99精品国产在热久久| 亚洲精品网址在线观看| 激情久久久久久| 亚洲国产精品尤物yw在线观看| 影音先锋亚洲精品| 亚洲高清一区二区三区| 日韩天堂av| 欧美在线视频导航| 免费久久99精品国产| 欧美激情视频在线播放| 99热这里只有成人精品国产| 午夜在线不卡| 麻豆精品91| 国产精品久久久久毛片软件| 国产日韩欧美一区| 亚洲欧洲视频| 欧美专区在线| 亚洲激情一区| 99香蕉国产精品偷在线观看| 欧美自拍偷拍| 欧美日韩在线第一页| 国产日韩精品一区| 日韩天堂av| 久久综合久久综合久久综合| 亚洲精品乱码视频| 久久久精品免费视频| 国产精品www.| 亚洲久久一区| 另类av导航| 一本大道久久精品懂色aⅴ| 久久精品中文字幕一区| 国产精品第一区| 亚洲精品一区二区在线| 久久国产手机看片| 一本大道av伊人久久综合| 麻豆成人av| 影音先锋日韩资源| 久久精品一本久久99精品| 一区二区三区久久网| 欧美第一黄色网| 在线免费精品视频| 久久婷婷影院| 亚洲欧美日韩在线播放| 国产精品久久久对白| 一本久久a久久精品亚洲| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩一本二本av| 欧美精品亚洲精品| 亚洲精品综合在线| 亚洲国产精品久久| 亚洲黄一区二区| 欧美日韩中文字幕在线视频| 国语自产在线不卡| 久久成人综合视频| 亚洲宅男天堂在线观看无病毒| 欧美人与禽猛交乱配| 亚洲精品视频免费| 91久久在线观看| 欧美激情二区三区| 日韩亚洲欧美成人一区| 亚洲欧洲日产国产网站| 欧美福利影院| 一本色道**综合亚洲精品蜜桃冫| 亚洲第一区在线| 欧美福利一区| 亚洲色图在线视频| 亚洲视频成人| 国产乱理伦片在线观看夜一区| 午夜精品一区二区三区四区| 亚洲自拍偷拍色片视频| 国产欧美日韩综合一区在线观看| 欧美在线一二三区| 久久精品综合一区| 亚洲国产你懂的| 91久久嫩草影院一区二区| 欧美日韩日日夜夜| 欧美一级黄色网| 久久久久久精| 日韩一级网站| 亚洲在线中文字幕| 国语自产精品视频在线看一大j8 | 亚洲午夜一区| 亚洲男女自偷自拍图片另类| 国产欧美一区二区三区国产幕精品| 性欧美暴力猛交69hd| 久久成人免费| av成人免费在线观看| 亚洲综合日韩在线| 亚洲国产精品第一区二区| 日韩视频欧美视频| 黄色日韩精品| 一区二区三区免费网站| 国产自产2019最新不卡| 亚洲精品永久免费| 国内成人精品2018免费看| 亚洲激情视频网站| 国产一区二区黄| 亚洲精选国产| 狠狠色综合网站久久久久久久| 亚洲精品在线视频| 一区二区三区在线观看欧美| 日韩一级在线观看| 伊人蜜桃色噜噜激情综合| 妖精成人www高清在线观看| 红桃视频一区| 亚洲一区免费观看| 99视频在线观看一区三区| 久久精品中文| 久久国产手机看片| 国产精品九九| 亚洲精品一区在线观看| 亚洲第一级黄色片| 亚洲午夜激情网站| 午夜精彩视频在线观看不卡 | 免费亚洲网站| 国产精品午夜春色av| 亚洲精品久久视频| 最新亚洲一区| 麻豆精品在线播放| 葵司免费一区二区三区四区五区| 国产精品久久久久一区| 日韩视频免费| 一区二区久久久久久| 欧美国产一区二区在线观看| 蜜臀av一级做a爰片久久| 激情欧美国产欧美| 久久久久亚洲综合| 美女被久久久| 亚洲第一页中文字幕| 久久久噜噜噜久久中文字幕色伊伊| 欧美亚洲免费电影| 国产精品一区二区久久国产| 亚洲一区二区四区| 欧美一区二区视频网站| 国产精品久久久久久久久免费樱桃| 99国产精品99久久久久久| 中文久久精品| 国产精品视频免费| 欧美一区免费视频| 久久精品卡一| 在线观看欧美成人| 美国十次成人| 亚洲精品乱码久久久久| 亚洲淫性视频| 国产日韩一区欧美| 久久九九免费视频| 欧美激情第六页| 日韩视频在线一区二区| 欧美精品久久天天躁| 日韩午夜免费视频| 新狼窝色av性久久久久久| 国产一区二区日韩| 女主播福利一区| 99视频+国产日韩欧美| 午夜精品久久久久久久99水蜜桃 | 在线综合视频| 国产精品草莓在线免费观看| 一本色道88久久加勒比精品| 亚洲欧美在线播放| 黄色另类av| 欧美视频福利| 欧美在线亚洲在线| 亚洲缚视频在线观看| 亚洲小少妇裸体bbw| 国产一区二区日韩| 欧美精品在线网站| 欧美一级大片在线观看| 欧美激情精品| 亚洲欧美日韩网| 亚洲韩日在线| 国产精品夜夜夜| 欧美福利小视频| 欧美一区中文字幕| 亚洲精品国产精品乱码不99| 欧美一区二区视频网站| 91久久久久| 国产欧美日韩在线播放| 日韩系列在线| 一本久久精品一区二区| 国产亚洲精品久久久| 欧美激情精品久久久久久大尺度| 一区二区三区日韩精品视频| 蜜桃久久精品一区二区| 性色一区二区三区| 99天天综合性| 亚洲国产高清一区| 国产日产精品一区二区三区四区的观看方式 | 91久久精品久久国产性色也91| 国产精品毛片一区二区三区| 久久亚洲私人国产精品va| 亚洲制服欧美中文字幕中文字幕| 欧美激情第五页| 久久久综合网| 久久国产主播| 欧美一区二区三区免费视| 亚洲一二三区在线观看| 99视频热这里只有精品免费|