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

無我

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

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 閱讀(2666) 評論(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>
            国产精品成人在线| 国产精品久线观看视频| 红桃视频成人| 欧美aa国产视频| 免费在线成人| 亚洲资源在线观看| 午夜精品一区二区在线观看| 国产一区二区福利| 亚洲高清在线视频| 欧美婷婷久久| 久久久久国色av免费观看性色| 久久精品国产一区二区三区| 亚洲精品乱码久久久久久按摩观| av不卡在线| 狠狠色丁香久久综合频道| 亚洲国产精品va在看黑人| 国产精品久久久久91| 久久亚洲影院| 欧美日韩中文字幕综合视频 | 欧美日韩在线另类| 久久国产欧美精品| 欧美女人交a| 久久久久免费观看| 欧美揉bbbbb揉bbbbb| 久久一综合视频| 欧美亚州一区二区三区| 免费在线亚洲| 国产农村妇女精品一区二区| 亚洲国产另类久久精品| 国产欧美一区二区精品忘忧草| 欧美黄在线观看| 国产免费成人在线视频| 亚洲精品护士| 亚洲高清久久网| 午夜国产精品视频免费体验区| 日韩亚洲精品在线| 久久人人爽人人爽爽久久| 亚洲欧美日韩精品久久| 欧美大片一区二区三区| 久久在线观看视频| 国产日韩一区欧美| 亚洲一区二区三区三| 一区二区av在线| 免费日韩成人| 免费日韩成人| 狠狠干综合网| 欧美在线在线| 久久国产精品久久久久久| 欧美日韩中文字幕在线视频| 亚洲激情av在线| 亚洲国产岛国毛片在线| 久久精品三级| 久久人91精品久久久久久不卡| 国产精品一区二区三区四区| 一区二区三区四区五区在线| 日韩一级网站| 欧美欧美全黄| 99精品国产福利在线观看免费| 最新成人av网站| 欧美成人一区在线| 亚洲国产综合在线| 99视频一区二区三区| 欧美精品一区二区三区在线播放| 亚洲黄色高清| 亚洲视频一区二区| 欧美日韩在线视频观看| 一本色道**综合亚洲精品蜜桃冫 | 久久久久久97三级| 国产欧美一区二区白浆黑人| 午夜在线观看欧美| 久久久久久久波多野高潮日日 | 国产精品丝袜白浆摸在线| 一区二区免费在线观看| 亚洲欧美日韩一区| 国产一区二区久久| 蘑菇福利视频一区播放| 亚洲精品日韩综合观看成人91| 在线天堂一区av电影| 国产精品激情电影| 欧美在线免费| 亚洲国产一区二区精品专区| 一本综合久久| 国产精品综合久久久| 久久久欧美一区二区| 亚洲激情在线激情| 欧美亚洲专区| 亚洲国产一二三| 欧美四级在线| 久久久亚洲国产天美传媒修理工 | 亚洲电影网站| 亚洲欧美激情视频| 亚洲第一福利在线观看| 欧美伦理视频网站| 午夜视频一区在线观看| 亚洲第一黄色| 午夜精品理论片| 最新国产成人在线观看| 国产精品美女在线观看| 欧美.www| 欧美一级精品大片| 亚洲美女色禁图| 久久久久国产精品麻豆ai换脸| 日韩视频一区二区三区| 国产亚洲欧美一区| 欧美精品激情blacked18| 欧美一区二区三区视频免费播放| 亚洲国产精品久久久久| 久久久精彩视频| 亚洲永久精品大片| 亚洲三级毛片| 亚洲承认在线| 国产日韩一区欧美| 国产精品国产三级国产普通话99| 老牛嫩草一区二区三区日本| 亚洲一区二区三区四区视频| 91久久国产综合久久91精品网站 | 亚洲精品一区在线| 亚洲高清在线观看| 一区二区自拍| 国产偷自视频区视频一区二区| 欧美另类69精品久久久久9999| 久久久蜜桃一区二区人| 亚洲欧美另类综合偷拍| 夜夜狂射影院欧美极品| 亚洲毛片在线看| 亚洲国产美女| 欧美激情小视频| 欧美 日韩 国产在线| 久久全国免费视频| 久久亚洲精品网站| 久久全球大尺度高清视频| 欧美在线欧美在线| 欧美一级午夜免费电影| 欧美一级在线播放| 久久成年人视频| 欧美一区二区三区免费观看| 亚洲欧美视频在线观看| 亚洲欧美日韩国产成人| 亚洲一区二区在线播放| 亚洲欧美久久| 欧美在线播放| 久久久久久**毛片大全| 美女免费视频一区| 欧美激情精品久久久六区热门| 欧美大片第1页| 亚洲观看高清完整版在线观看| 亚洲国产成人av好男人在线观看| 欧美国产激情| 99国产精品99久久久久久粉嫩| 日韩午夜三级在线| 亚洲宅男天堂在线观看无病毒| 午夜精品偷拍| 久久久久国产一区二区| 欧美成人黄色小视频| 欧美女同在线视频| 国产精品视频久久| 激情欧美一区二区三区| 亚洲激情第一区| 亚洲小说区图片区| 久久久亚洲一区| 亚洲韩日在线| 亚洲伊人一本大道中文字幕| 欧美在线啊v| 欧美国产免费| 国产精品夜色7777狼人| 精品成人一区| 亚洲无线视频| 久久久国产成人精品| 亚洲国产欧美精品| 亚洲免费在线视频| 欧美高清在线视频| 国产精品欧美在线| 亚洲人成网站精品片在线观看| 亚洲一区999| 嫩模写真一区二区三区三州| 亚洲理论在线| 久久黄色网页| 欧美视频在线视频| 在线看不卡av| 欧美一区二区三区视频免费| 亚洲国产精品va在看黑人| 亚洲综合视频1区| 欧美va天堂| 国内精品伊人久久久久av影院| 一区二区三区国产盗摄| 美女精品在线| 亚洲欧美综合网| 欧美图区在线视频| 亚洲靠逼com| 久久只精品国产| 亚洲自拍16p| 欧美日韩日日骚| 亚洲日本成人女熟在线观看| 久久激情综合网| 一区二区三区欧美在线观看| 欧美**人妖| 伊人久久亚洲热| 久久精品在线观看| 亚洲综合第一| 国产精品美女视频网站|