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

無我

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

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 閱讀(2694) 評論(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>
            99国产精品久久久久老师| 夜夜狂射影院欧美极品| 久久九九精品99国产精品| 国产在线不卡精品| 久久精品导航| 久久久久久夜| 亚洲免费av观看| 一区二区高清视频在线观看| 国产精品久久久久久模特| 性欧美video另类hd性玩具| 香蕉久久久久久久av网站| 狠狠色狠狠色综合系列| 模特精品裸拍一区| 欧美国产日本韩| 亚洲一区二区三区精品在线| 性做久久久久久久久| 在线看日韩av| 亚洲美女av网站| 国产日韩欧美a| 欧美国产一区二区| 欧美区视频在线观看| 新67194成人永久网站| 久久久久91| 亚洲视频香蕉人妖| 欧美中在线观看| 99国内精品| 欧美在线视频观看| 91久久精品美女高潮| 在线视频欧美日韩| 亚洲国产毛片完整版| 亚洲一区二区三区高清| 永久免费毛片在线播放不卡| 这里只有视频精品| 影院欧美亚洲| 亚洲一区二三| 亚洲午夜国产成人av电影男同| 国产一区二区中文| 日韩午夜黄色| 亚洲第一主播视频| 亚洲制服丝袜在线| 日韩一级黄色av| 久久久国际精品| 羞羞漫画18久久大片| 欧美另类变人与禽xxxxx| 久久天天躁狠狠躁夜夜av| 国产精品久久久久久久久久尿| 欧美高清在线精品一区| 国产午夜精品久久久久久免费视| 日韩亚洲国产欧美| 亚洲欧洲一区二区三区| 久久精品欧美| 久久久久国产一区二区三区| 国产精品免费看| 一本久久青青| 亚洲少妇自拍| 欧美久久久久久| 亚洲人精品午夜| 亚洲国产福利在线| 欧美中文字幕视频| 久久久99爱| 国产一区二区精品久久| 亚洲欧美日韩精品久久| 亚洲欧美日韩国产一区二区三区| 欧美日韩国产在线播放| 亚洲精品免费一区二区三区| 亚洲毛片一区| 欧美极品一区| 日韩午夜激情| 午夜久久久久久久久久一区二区| 国产精品女主播在线观看| 亚洲图片在线| 久久gogo国模裸体人体| 国产日韩一区二区三区| 亚洲男人的天堂在线观看 | 久久人人97超碰国产公开结果| 香蕉久久夜色精品国产| 国产精品视频免费在线观看| 亚洲男人的天堂在线aⅴ视频| 亚洲欧美在线一区| 国产欧美精品xxxx另类| 久久国产精品99久久久久久老狼 | 亚洲永久免费观看| 欧美三级视频在线观看| 亚洲视频一区| 久久国产天堂福利天堂| 在线观看日韩一区| 欧美精品午夜| 亚洲综合国产| 免费欧美在线视频| 亚洲精品免费在线播放| 欧美日韩综合视频| 午夜视频久久久久久| 女同一区二区| 亚洲午夜av电影| 国产午夜精品全部视频播放| 麻豆久久久9性大片| 亚洲免费观看高清完整版在线观看熊| 香蕉av福利精品导航| 影音先锋日韩有码| 欧美日韩亚洲天堂| 欧美诱惑福利视频| 91久久精品网| 久久精品免费电影| 亚洲黄色小视频| 国产精品捆绑调教| 久久免费偷拍视频| 一区二区三区欧美视频| 久久夜色精品国产亚洲aⅴ| 99精品热视频| 在线观看日韩国产| 国产精品欧美经典| 免费国产一区二区| 香蕉久久夜色精品| 亚洲麻豆视频| 欧美国产成人在线| 久久精品国产69国产精品亚洲| 亚洲精品一区二区网址| 国产午夜亚洲精品理论片色戒| 欧美精品久久久久a| 久久久久国产精品www| 在线亚洲美日韩| 亚洲国产精品久久久久秋霞蜜臀 | 午夜激情久久久| 亚洲精选大片| 亚洲国产精品第一区二区三区| 久久野战av| 久久精品综合网| 午夜久久一区| 亚洲欧美日韩一区二区在线| 亚洲精品日韩激情在线电影| 在线观看视频一区| 国产一区二区黄| 国产日韩欧美一区二区三区在线观看| 欧美日韩三级| 欧美日韩精品久久| 欧美激情视频一区二区三区不卡| 久久伊人精品天天| 久久久另类综合| 久久精品99无色码中文字幕| 久久av一区二区三区漫画| 午夜视频在线观看一区| 亚洲小说区图片区| 亚洲制服少妇| 午夜精品一区二区三区电影天堂 | 久久免费视频网| 久久久精彩视频| 久久香蕉国产线看观看网| 久久国产精品色婷婷| 久久精品二区亚洲w码| 欧美制服丝袜| 久久亚洲精品欧美| 免费不卡欧美自拍视频| 欧美成人精品不卡视频在线观看 | 一区二区欧美在线| 中国亚洲黄色| 亚洲欧美激情四射在线日 | 国产精品大全| 国产精品热久久久久夜色精品三区 | 亚洲毛片一区| 亚洲在线第一页| 欧美在线播放| 免费观看久久久4p| 欧美日韩国产成人在线| 国产精品www色诱视频| 国产精品综合不卡av| 国内精品久久国产| 在线播放豆国产99亚洲| 日韩视频在线观看| 亚洲一区二区三区高清不卡| 久久久久久色| 亚洲欧洲日韩女同| 亚洲私人影院在线观看| 久久狠狠亚洲综合| 欧美成人免费一级人片100| 欧美三级中文字幕在线观看| 国产一区二区精品久久91| 亚洲国产一区二区三区在线播| 99精品热6080yy久久| 久久9热精品视频| 亚洲黄一区二区| 性色av一区二区怡红| 欧美顶级少妇做爰| 国产精品v欧美精品v日韩| 国产一区二区三区直播精品电影 | 亚洲小说欧美另类婷婷| 久久理论片午夜琪琪电影网| 最新日韩中文字幕| 午夜精品视频在线| 欧美巨乳在线| 红桃视频亚洲| 午夜免费在线观看精品视频| 亚洲第一精品夜夜躁人人爽| 午夜精品电影| 欧美四级在线观看| 最新国产精品拍自在线播放| 久久激情五月丁香伊人| 99视频一区二区| 欧美激情导航| 在线观看福利一区| 久久不射中文字幕|