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

無(wú)我

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

評(píng)論

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

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

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

公告

本博客原創(chuàng)文章,歡迎轉(zhuǎn)載和交流。不過(guò)請(qǐng)注明以下信息:
作者:TimWu
郵箱:timfly@yeah.net
來(lái)源:www.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>
            久久精品国产69国产精品亚洲| 夜色激情一区二区| 欧美一区2区三区4区公司二百| 国产精品99久久久久久久久久久久| 欧美激情一区| 亚洲影院免费| 欧美亚洲在线视频| 亚洲大胆女人| 亚洲美女啪啪| 国产乱码精品一区二区三区五月婷 | 久久综合影视| 美女黄色成人网| 99视频精品在线| 在线性视频日韩欧美| 国产亚洲日本欧美韩国| 老牛国产精品一区的观看方式| 理论片一区二区在线| 一本色道久久综合狠狠躁的推荐| 亚洲一区999| 在线精品在线| 亚洲视频在线一区观看| 国内揄拍国内精品少妇国语| 亚洲黄色影院| 国产欧美精品一区二区色综合| 亚洲尤物视频在线| 久久国产婷婷国产香蕉| 久久伊人免费视频| 亚洲午夜电影| 久久深夜福利免费观看| 99精品国产一区二区青青牛奶| 久久久91精品国产一区二区三区| 亚洲少妇在线| 国产精品亚洲综合色区韩国| 夜色激情一区二区| 国模精品一区二区三区| 亚洲国产小视频| 国产一区二区精品久久| 亚洲精品之草原avav久久| 狠狠干综合网| 亚洲午夜黄色| 久久国产精品99精品国产| 亚洲激情一区二区三区| 99视频精品在线| 精品粉嫩aⅴ一区二区三区四区| 亚洲美女在线看| 尤物九九久久国产精品的特点| 99re8这里有精品热视频免费| 在线成人黄色| 性感少妇一区| 欧美一区二区高清| 国产精品国内视频| 亚洲精选一区| 日韩亚洲视频在线| 老司机一区二区三区| 久久久亚洲国产天美传媒修理工| 国产精品久久久久久久久久妞妞| 亚洲国产精品悠悠久久琪琪| 在线播放视频一区| 久久国产精品色婷婷| 欧美中文字幕| 国产精品天天摸av网| 亚洲国产天堂久久综合| 国产一区二区三区在线观看免费 | 亚洲精品久久久久久久久久久| 午夜免费日韩视频| 欧美一区日本一区韩国一区| 国产精品久久国产精麻豆99网站| 日韩午夜免费视频| 亚洲午夜国产成人av电影男同| 欧美日韩国产成人高清视频| 亚洲狠狠丁香婷婷综合久久久| 亚洲日本无吗高清不卡| 欧美国产成人在线| 亚洲蜜桃精久久久久久久| 久久国产88| 久久精品在线播放| 狠狠色2019综合网| 久久婷婷国产麻豆91天堂| 浪潮色综合久久天堂| 精品二区视频| 欧美激情一区| 一本一本久久a久久精品综合麻豆| 一区二区三区.www| 国产精品午夜在线观看| 欧美一区二区免费| 免费观看30秒视频久久| 日韩视频国产视频| 国产精品一二三四| 久久只有精品| 日韩小视频在线观看专区| 欧美一区二区三区免费观看| 精品福利免费观看| 欧美理论电影在线播放| 亚洲永久在线观看| 欧美刺激性大交免费视频| 在线精品视频一区二区| 亚洲天堂成人在线观看| 国产精品视频区| 久久精品免视看| 亚洲精品专区| 久久久久亚洲综合| 一区二区三区国产盗摄| 国产主播一区二区三区四区| 欧美风情在线观看| 欧美一区二区视频在线观看2020 | 亚洲欧洲精品一区二区三区不卡| 欧美日韩国产区一| 久久成人亚洲| 亚洲调教视频在线观看| 欧美国产日本| 久久精品人人做人人爽电影蜜月| 亚洲毛片在线看| 国产无遮挡一区二区三区毛片日本| 欧美v亚洲v综合ⅴ国产v| 亚洲婷婷免费| 亚洲美女精品久久| 亚洲高清免费在线| 久久色在线观看| 欧美亚洲系列| 亚洲网友自拍| 一本到高清视频免费精品| 好吊日精品视频| 国产欧美日韩视频| 欧美日韩一区二区三区视频| 免费观看日韩av| 久久激情视频免费观看| 亚洲午夜一区二区三区| 日韩网站免费观看| 亚洲激情第一页| 欧美国产精品v| 免费亚洲视频| 免费久久精品视频| 美女国产一区| 久久久亚洲高清| 久久久91精品| 久久精品论坛| 久久久久国产精品人| 欧美在线黄色| 久久er精品视频| 久久久国产一区二区| 久久国产乱子精品免费女| 欧美在线资源| 久久久久久久久伊人| 久久久久国产成人精品亚洲午夜| 欧美中文字幕| 久久九九国产精品| 玖玖综合伊人| 欧美激情一区在线| 亚洲国产成人在线播放| 亚洲欧洲三级| 亚洲一二三区在线| 亚洲国产视频a| 麻豆精品传媒视频| 久久精品国产99精品国产亚洲性色| 亚洲午夜精品一区二区三区他趣| 亚洲免费激情| 亚洲一级特黄| 欧美一区二区三区在线看| 久久国产婷婷国产香蕉| 老鸭窝91久久精品色噜噜导演| 欧美www视频| 欧美日韩精品免费观看视一区二区| 欧美日韩国产综合一区二区| 欧美三级不卡| 国产午夜亚洲精品理论片色戒| 国产亚洲欧美一区二区三区| 亚洲国产成人久久| 一区二区三区高清在线| 亚洲一区二区三区精品视频| 欧美在线播放视频| 欧美成人精品福利| av成人国产| 国产精品视频导航| 国产一区深夜福利| 亚洲区一区二| 午夜在线观看免费一区| 久久一区激情| 亚洲精品九九| 伊人精品久久久久7777| 亚洲国产激情| 午夜精品理论片| 欧美福利视频在线| 一区二区日韩伦理片| 久久人人97超碰人人澡爱香蕉| 欧美精品一区三区| 激情久久久久久久| 亚洲视频精选在线| 美女网站久久| 午夜视频精品| 欧美日韩国产影院| 黄色小说综合网站| 亚洲欧美日韩综合aⅴ视频| 欧美福利视频一区| 性xx色xx综合久久久xx| 欧美日韩免费一区二区三区| 激情婷婷欧美| 久久成人精品| 亚洲一区二区黄色| 欧美久久一级| 亚洲欧洲日韩综合二区|