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

無我

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

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>
            亚洲欧美视频在线观看| 欧美一级电影久久| 亚洲第一级黄色片| 久久久九九九九| 1024成人网色www| 欧美国产精品中文字幕| 欧美成人亚洲| 亚洲神马久久| 午夜精品久久久久久久白皮肤| 国产精品一区二区久久国产| 久久精品论坛| 狂野欧美一区| 亚洲一级影院| 久久久999精品| 99re66热这里只有精品4| 亚洲视频在线观看网站| 国产日韩欧美综合在线| 欧美jjzz| 国产精品视频不卡| 老巨人导航500精品| 欧美高清不卡在线| 欧美一区二区高清在线观看| 久久久久国产精品一区三寸 | 日韩视频免费观看高清完整版| 欧美日韩成人一区二区三区| 欧美一区激情| 欧美成人免费观看| 欧美在线视频一区二区三区| 老司机一区二区三区| 亚洲自拍啪啪| 猛干欧美女孩| 久久成人一区| 欧美三级电影一区| 另类图片综合电影| 国产精品拍天天在线| 亚洲激情视频网站| 国产亚洲人成a一在线v站| 亚洲欧洲日韩在线| 激情综合在线| 亚洲永久精品国产| 日韩一二三在线视频播| 欧美伊人久久久久久久久影院 | 国产综合久久久久久| 日韩视频中文字幕| 亚洲欧洲在线观看| 久久国产88| 欧美一区二区三区在线看| 欧美精品乱码久久久久久按摩| 久久国产视频网站| 国产精品亚洲аv天堂网| 最新热久久免费视频| 在线观看亚洲视频| 久久国产欧美| 久久久久久一区| 国产欧美日韩不卡| 亚洲欧美电影院| 亚洲欧美国产不卡| 国产精品成人免费| 夜夜爽夜夜爽精品视频| 一本色道88久久加勒比精品| 久久影院亚洲| 欧美成年人网站| 永久域名在线精品| 久久青青草原一区二区| 开元免费观看欧美电视剧网站| 国产亚洲欧洲| 久久精品国产亚洲一区二区| 久久久在线视频| 好吊妞**欧美| 免费成人在线观看视频| 欧美国产日本| 日韩视频一区二区三区| 欧美日本在线| 一区二区三区四区在线| 午夜电影亚洲| 国产视频欧美视频| 久久精品视频免费播放| 牛牛国产精品| 日韩亚洲精品电影| 国产精品黄视频| 欧美一区二区三区免费视频 | 亚洲电影第1页| 蜜桃av一区二区| 亚洲精品一二三| 亚洲综合色丁香婷婷六月图片| 国产精品s色| 欧美一区二区三区视频在线观看 | 亚洲精品国产精品国产自| 一区二区三区久久久| 国产精品久久久久久久午夜 | 久久久久久久久久看片| 免费欧美视频| 亚洲视频综合| 狠狠v欧美v日韩v亚洲ⅴ| 欧美www视频| 一本色道综合亚洲| 噜噜噜噜噜久久久久久91 | 亚洲毛片网站| 国产精品影音先锋| 美女久久一区| 亚洲欧美日本日韩| 亚洲黄一区二区| 久久av红桃一区二区小说| 亚洲高清在线视频| 国产精品视频yy9299一区| 久久久久久久成人| 一区二区三区av| 欧美大片18| 欧美一区二区免费| 日韩视频免费观看高清完整版| 国产精品日韩精品欧美精品| 欧美 亚欧 日韩视频在线| 亚洲午夜在线视频| 亚洲风情亚aⅴ在线发布| 篠田优中文在线播放第一区| 亚洲国产影院| 国产日韩av高清| 欧美三区视频| 欧美电影免费| 久久免费视频在线观看| 亚洲性视频网址| 亚洲精品国产精品久久清纯直播 | 欧美激情中文不卡| 久久九九电影| 欧美一区二区三区在线观看| 日韩亚洲在线| 亚洲日本va午夜在线电影| 国产香蕉97碰碰久久人人| 国产精品wwwwww| 欧美日韩三级视频| 欧美成人久久| 免费欧美在线| 免费观看一级特黄欧美大片| 午夜久久99| 午夜精品久久久久久久久| 99日韩精品| 亚洲免费观看| 999在线观看精品免费不卡网站| 欧美国产欧美综合| 欧美成ee人免费视频| 免费亚洲一区二区| 久久亚洲私人国产精品va| 久久色在线播放| 久久久久国产精品人| 久久精品理论片| 久久久久久夜精品精品免费| 久久久久9999亚洲精品| 久久久99精品免费观看不卡| 久久精品日产第一区二区| 久久高清免费观看| 久久久综合激的五月天| 久久亚洲一区二区三区四区| 久久视频这里只有精品| 欧美+亚洲+精品+三区| 欧美韩日一区| 日韩视频精品在线| 亚洲视频在线播放| 午夜性色一区二区三区免费视频 | 亚洲伦理精品| 亚洲一区二区伦理| 性视频1819p久久| 久久视频在线视频| 欧美高清不卡在线| 国产精品久久久久99| 国产日韩av一区二区| 在线成人av网站| 亚洲精品美女在线| 亚洲欧美另类在线| 久久蜜臀精品av| 最新日韩中文字幕| 亚洲欧美福利一区二区| 久久久久国产精品www| 欧美精品一区二区精品网| 国产精品啊啊啊| 激情亚洲网站| 99精品视频免费全部在线| 香蕉久久夜色精品| 美女在线一区二区| 99视频超级精品| 久久久999精品免费| 欧美日韩一区二区三区四区在线观看| 国产精品美女久久久久久免费| 精品999网站| 亚洲午夜精品| 欧美电影在线免费观看网站| 日韩一区二区精品在线观看| 欧美伊人精品成人久久综合97 | 亚洲永久在线| 欧美丰满高潮xxxx喷水动漫| 国产精品日韩在线| 亚洲另类自拍| 久久亚洲一区| 亚洲一级在线观看| 欧美国产日韩精品免费观看| 国产精品午夜春色av| 日韩视频免费观看高清完整版| 欧美一区日本一区韩国一区| 亚洲精品欧美在线| 久久先锋资源| 国产亚洲欧美一级|