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

無我

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

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>
            国产精品久久久久久久9999| 一本色道久久综合狠狠躁篇的优点| 国产一级揄自揄精品视频| 欧美精品亚洲一区二区在线播放| 美国十次成人| 欧美日韩国产bt| 欧美视频一区在线| 国产精品日韩一区二区| 国产伦精品一区二区三区视频孕妇 | 午夜精品一区二区三区在线播放| 午夜亚洲福利| 久久亚洲私人国产精品va| 欧美国产日韩一区二区在线观看 | 亚洲国产成人精品久久久国产成人一区| 亚洲大片一区二区三区| 日韩亚洲欧美成人| 久久精品99国产精品| 欧美韩日亚洲| 亚洲欧美成人一区二区三区| 久久久久久久久伊人| 欧美日韩成人一区二区| 国产午夜亚洲精品理论片色戒| 亚洲国产欧美一区二区三区丁香婷| 亚洲免费观看在线视频| 久久天堂国产精品| 日韩视频三区| 久久九九精品| 欧美日韩在线高清| 黑人一区二区三区四区五区| 亚洲视频网在线直播| 久久亚洲色图| 亚洲在线不卡| 欧美女人交a| 揄拍成人国产精品视频| 亚洲免费在线看| 亚洲美女在线国产| 欧美大片网址| 在线播放日韩| 久久精品123| 亚洲午夜精品网| 欧美人与禽性xxxxx杂性| 在线日韩av永久免费观看| 欧美与黑人午夜性猛交久久久| 亚洲精品美女在线| 久久综合九九| 狠色狠色综合久久| 久久精品国产精品亚洲| 亚洲综合日韩在线| 国产精品入口夜色视频大尺度| 一本久久综合亚洲鲁鲁| 亚洲国产免费| 欧美高清视频www夜色资源网| 亚洲成色777777女色窝| 蜜桃av一区二区三区| 久久精品国产亚洲精品| 国产一区二区三区自拍| 久久精品女人| 久久九九99视频| 亚洲第一区在线观看| 免费毛片一区二区三区久久久| 久久精品国产99国产精品| 好看的日韩视频| 免费日韩成人| 免费毛片一区二区三区久久久| 亚洲国产精品一区| 欧美1区2区视频| 欧美成人情趣视频| 一区二区激情| 亚洲欧美日韩一区二区在线 | 一区二区三区欧美视频| 欧美日产国产成人免费图片| 99在线热播精品免费| 日韩视频免费在线观看| 国产精品久久久久久亚洲调教| 亚洲欧美网站| 久久久久国产精品www| 在线观看亚洲精品| 欧美成人亚洲成人日韩成人| 嫩模写真一区二区三区三州| 一本色道久久综合亚洲二区三区 | 久久九九国产| 久久婷婷成人综合色| 日韩亚洲不卡在线| 亚洲尤物视频网| 亚洲高清免费在线| 中文久久乱码一区二区| 国产一区自拍视频| 亚洲激情专区| 国产精品亚洲片夜色在线| 老司机亚洲精品| 欧美视频中文字幕在线| 久久伊人免费视频| 国产精品va| 欧美激情亚洲国产| 国产日韩欧美精品一区| 欧美激情一区在线| 国产精一区二区三区| 欧美成年人视频网站欧美| 欧美日韩综合在线| 欧美高清日韩| 国产视频精品免费播放| 欧美激情2020午夜免费观看| 国产精品黄视频| 欧美国内亚洲| 国内不卡一区二区三区| a91a精品视频在线观看| 雨宫琴音一区二区在线| 一区二区三区高清在线| 亚洲国产精品t66y| 欧美一区=区| 欧美亚洲免费| 欧美日韩久久| 欧美激情偷拍| 在线观看亚洲精品视频| 亚洲色诱最新| 一本色道久久加勒比88综合| 久久影视三级福利片| 久久国产免费看| 国产精品美女视频网站| 99精品热视频| 一区二区电影免费观看| 农夫在线精品视频免费观看| 老司机午夜精品视频| 国内精品久久久久影院薰衣草| 亚洲一区三区电影在线观看| 一二三区精品| 欧美劲爆第一页| 欧美国产精品日韩| 亚洲国产日本| 欧美电影免费观看高清完整版 | 一本久久知道综合久久| 99精品视频免费全部在线| 母乳一区在线观看| 亚洲国产欧美在线| 亚洲老板91色精品久久| 欧美不卡视频| 亚洲国内精品| 亚洲精选在线观看| 欧美日韩mv| 亚洲一区国产精品| 久久福利精品| 激情欧美国产欧美| 久久亚洲精品一区二区| 亚洲电影免费观看高清完整版在线| 在线观看亚洲视频啊啊啊啊| 老司机午夜精品视频| 欧美激情综合色| 一本色道久久综合一区| 欧美午夜视频在线观看| 中文精品视频一区二区在线观看| 午夜国产精品影院在线观看| 国产精品普通话对白| 亚欧成人精品| 欧美成人免费观看| 一本色道久久综合亚洲精品婷婷| 欧美三级午夜理伦三级中文幕| 一区二区三区视频在线看| 欧美一区高清| 亚洲欧洲日本专区| 欧美吻胸吃奶大尺度电影| 亚洲综合电影一区二区三区| 久久婷婷av| 一卡二卡3卡四卡高清精品视频| 欧美色播在线播放| 欧美一区二区三区四区在线观看| 欧美插天视频在线播放| 亚洲视频一区二区免费在线观看| 国产精品一卡| 欧美99在线视频观看| 亚洲图片在线| 亚洲丰满在线| 欧美一级午夜免费电影| 亚洲黄色影院| 国产一区二区激情| 欧美日韩一卡| 老司机凹凸av亚洲导航| 亚洲社区在线观看| 欧美激情亚洲一区| 久久精品成人欧美大片古装| 亚洲国产日韩一级| 国产欧美丝祙| 欧美日本免费| 看片网站欧美日韩| 亚洲欧美一区二区视频| 亚洲三级影院| 欧美搞黄网站| 久久免费少妇高潮久久精品99| 日韩五码在线| 亚洲第一精品电影| 国产日韩欧美在线看| 欧美日韩一区二区在线观看| 男人天堂欧美日韩| 久久综合九色九九| 久久国产精品一区二区| 亚洲女人天堂成人av在线| 亚洲精品一级| 亚洲福利小视频| 你懂的国产精品| 裸体丰满少妇做受久久99精品| 午夜视频在线观看一区二区三区|