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

無我

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

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
來源:m.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久久久久久| 欧美精品粉嫩高潮一区二区| 久久蜜桃精品| 欧美在线免费观看| 亚洲一区二区日本| 亚洲无亚洲人成网站77777 | 欧美视频中文在线看| 欧美黄污视频| 欧美日韩国产成人| 欧美视频成人| 国产精品国产自产拍高清av王其| 欧美无砖砖区免费| 欧美日韩一区二区在线观看| 国产精品久久久久国产精品日日 | 一区二区三区四区五区在线| 亚洲视频www| 欧美一级一区| 男女精品视频| 欧美午夜免费电影| 国产美女精品视频免费观看| 精品成人一区二区| 日韩视频在线免费| 西西裸体人体做爰大胆久久久| 久久久成人网| 亚洲精品美女免费| 在线亚洲观看| 久久综合99re88久久爱| 欧美色一级片| 永久免费毛片在线播放不卡| 中文国产成人精品| 欧美在线免费| 亚洲精一区二区三区| 久久福利毛片| 欧美日韩亚洲一区在线观看| 激情小说另类小说亚洲欧美| 国产精品久久久久免费a∨| 欧美女激情福利| 欧美日韩中文另类| 国产视频在线观看一区二区三区| 在线不卡中文字幕| 亚洲欧美视频一区二区三区| 欧美高清视频一二三区| 亚洲一区二三| 欧美精品一区二区三区蜜桃| 好吊一区二区三区| 亚洲影院污污.| 亚洲大片av| 久久国产精品电影| 国产精品久久久久9999吃药| 亚洲黄色成人网| 久久精品国产99精品国产亚洲性色| 亚洲国产你懂的| 国产精品视频999| 国产曰批免费观看久久久| 欧美成va人片在线观看| 国产一区日韩二区欧美三区| 亚洲欧美日韩精品久久久久| 亚洲黄色精品| 蜜桃久久精品乱码一区二区| 国模精品娜娜一二三区| 欧美在线高清视频| 亚洲男人影院| 国产欧美精品在线播放| 新67194成人永久网站| 一区二区三区色| 欧美日韩一区三区| 亚洲一区二区高清| 一区二区三区欧美在线观看| 欧美午夜不卡在线观看免费| 亚洲亚洲精品三区日韩精品在线视频| 亚洲国产成人在线| 欧美精品18+| 一区二区三区国产在线| 亚洲精品一区二区三区樱花| 欧美人在线观看| 中文欧美日韩| 亚洲一区二区三区四区视频| 国产九九精品| 久久精品99无色码中文字幕 | 中文国产成人精品| 欧美视频在线观看视频极品| 亚洲一区区二区| 亚洲伊人色欲综合网| 国产一区在线看| 亚洲精品国精品久久99热| 欧美另类视频| 在线视频亚洲一区| 一区二区三区国产在线观看| 欧美午夜视频在线| 久久久精品日韩欧美| 久久蜜桃av一区精品变态类天堂| 亚洲高清中文字幕| 亚洲乱码国产乱码精品精| 欧美日韩国产精品自在自线| 欧美主播一区二区三区| 欧美国产亚洲精品久久久8v| 欧美成年视频| 国产精品hd| 欧美亚洲日本网站| 久久影院午夜片一区| 亚洲国产精品久久人人爱蜜臀| 欧美成人精品在线| 午夜久久资源| 另类天堂av| 亚洲欧美日韩高清| 卡一卡二国产精品| aa成人免费视频| 亚洲综合视频在线| 欧美一区二区三区四区视频| 一区二区三区在线免费播放| 久久一区精品| 亚洲精品乱码久久久久久久久 | 老司机免费视频一区二区| 亚洲天堂第二页| 国产婷婷色一区二区三区四区| 久久精品免费播放| 欧美国产欧美亚州国产日韩mv天天看完整| 99精品福利视频| 先锋影音国产精品| 亚洲夜间福利| 久久综合狠狠| 国产区欧美区日韩区| 欧美亚洲综合久久| 亚洲一卡二卡三卡四卡五卡| 欧美精品日韩www.p站| 欧美中文字幕不卡| 美女精品自拍一二三四| 亚洲一级在线观看| 久久精品国产亚洲a| 99视频精品全部免费在线| 性欧美超级视频| 亚洲二区精品| 久久亚洲国产精品日日av夜夜| 亚洲少妇最新在线视频| 久久婷婷国产麻豆91天堂| 亚洲欧美国产高清va在线播| 久久久久久一区| 欧美日本在线视频| 欧美激情精品久久久久久免费印度 | 国产日韩欧美亚洲| 亚洲国产小视频在线观看| 国产日韩欧美高清| 亚洲最新在线| 亚洲肉体裸体xxxx137| 欧美在线啊v| 蜜桃久久av一区| 韩国一区电影| 欧美亚洲一区三区| 一区二区三区四区五区精品视频 | 欧美有码视频| 亚洲欧美日韩国产一区二区| 久久久久免费| 欧美一区永久视频免费观看| 欧美精品七区| 久久久精品动漫| 国产亚洲成年网址在线观看| 亚洲一区二区三区欧美| 午夜精品久久久久久久99黑人| 免费观看久久久4p| 99视频一区| 一区二区三区国产盗摄| 国产乱肥老妇国产一区二| 欧美在线日韩在线| 久久免费视频一区| 狠狠爱www人成狠狠爱综合网| 亚洲男人影院| 一本一本久久| 欧美三日本三级少妇三2023| 99视频一区二区三区| 亚洲精品一区二区三区av| 欧美一级欧美一级在线播放| 欧美日韩国产亚洲一区| 亚洲精品国产系列| 亚洲青色在线| 欧美激情综合网| 亚洲一区在线看| 亚洲影视在线播放| 国产精品久久久久久久久久久久久| 亚洲精品极品| 亚洲一本大道在线| 国产精品国产自产拍高清av王其| 99成人免费视频| 午夜精品久久久久影视| 国产日韩欧美在线看| 欧美专区福利在线| 欧美激情第8页| 在线视频日韩| 国产婷婷精品| 欧美三级在线| 免费影视亚洲| 亚洲综合日韩在线| 国产欧美一区二区白浆黑人| 久久经典综合| 日韩天堂在线观看| 亚洲午夜性刺激影院| 亚洲国产精品成人va在线观看| 欧美精品一区二区三| 午夜在线一区二区|