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

無(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>
            国产精品区一区二区三区| 最新亚洲一区| 亚洲国产精品福利| 国产一区二区日韩| 精品福利电影| 亚洲精品社区| 亚洲最新视频在线| 亚洲欧美一区二区精品久久久| 亚洲影院免费| 久久嫩草精品久久久久| 欧美二区在线播放| 亚洲人在线视频| 亚洲在线视频观看| 久久久久国产精品厨房| 欧美裸体一区二区三区| 国产伦精品一区二区三区高清版| 国模私拍一区二区三区| 一区二区三区 在线观看视频 | 亚洲黄页视频免费观看| 亚洲高清激情| 亚洲一区二区三区在线看 | 香蕉久久夜色精品国产| 久久中文欧美| 99热精品在线| 久久亚洲一区二区三区四区| 欧美日韩高清在线播放| 国产自产在线视频一区| 一区二区三区回区在观看免费视频| 先锋资源久久| 亚洲清纯自拍| 老巨人导航500精品| 国产精品人人做人人爽人人添| 亚洲福利久久| 久久久久9999亚洲精品| 亚洲乱码国产乱码精品精可以看| 欧美自拍丝袜亚洲| 国产精品久99| 中文在线一区| 亚洲国产精品一区在线观看不卡| 欧美综合国产| 国产欧美日本| 亚洲欧美中文另类| 亚洲精品综合精品自拍| 玖玖综合伊人| 樱桃国产成人精品视频| 久久不射网站| 亚洲一区尤物| 欧美日韩一区二区三| 亚洲人成毛片在线播放| 你懂的国产精品永久在线| 亚洲欧美日韩区| 国产精品久久久久久久久免费| 亚洲另类自拍| 亚洲人成在线观看一区二区| 牛人盗摄一区二区三区视频| 亚洲大胆人体视频| 免费成人网www| 久久久久国产精品厨房| 精品成人在线| 欧美v亚洲v综合ⅴ国产v| 久久久久国产精品厨房| 在线 亚洲欧美在线综合一区| 久久久久久一区二区三区| 午夜精品久久久久久久久久久久久 | 午夜日本精品| 亚洲女女女同性video| 国产精品美女一区二区| 亚洲欧美日韩中文在线制服| 亚洲视频久久| 国产日韩欧美亚洲| 麻豆精品网站| 欧美国产激情二区三区| 日韩亚洲欧美一区| 99视频在线观看一区三区| 欧美视频在线看| 欧美在线看片| 猛干欧美女孩| 亚洲综合视频网| 欧美伊人久久| 亚洲精品国精品久久99热| 日韩视频在线观看免费| 国产精品伦理| 欧美aaaaaaaa牛牛影院| 欧美精品在线播放| 香蕉久久国产| 麻豆精品91| 亚洲专区免费| 久久婷婷综合激情| 一区二区日韩精品| 久久av二区| 一本色道久久88精品综合| 亚洲男人第一网站| 亚洲精品免费观看| 亚洲欧美在线免费| 亚洲精品中文字幕有码专区| 亚洲午夜精品久久| 亚洲丰满少妇videoshd| 亚洲视屏一区| 亚洲精品欧美激情| 欧美一区二区三区免费大片| 亚洲精品免费在线播放| 欧美在线视频在线播放完整版免费观看| 亚洲二区在线| 翔田千里一区二区| 一本色道久久综合亚洲二区三区| 欧美一区二区三区喷汁尤物| 夜夜嗨av一区二区三区四区 | 午夜亚洲精品| 欧美精品高清视频| 久久永久免费| 国产精品自拍三区| 亚洲美女福利视频网站| 一区二区三区在线观看欧美| 亚洲一级二级在线| 日韩视频一区二区在线观看 | 久久精品伊人| 亚洲欧美一区二区激情| 欧美精品一区二区精品网 | 激情综合色丁香一区二区| 日韩亚洲不卡在线| 亚洲国产日日夜夜| 久久精品一区二区三区不卡牛牛 | 老鸭窝91久久精品色噜噜导演| 欧美日本一区二区视频在线观看| 久久综合色88| 国产一区成人| 亚洲伊人一本大道中文字幕| 一区二区三区四区在线| 欧美国产一区二区在线观看| 欧美jjzz| 亚洲国产日韩一级| 欧美xart系列在线观看| 美女视频一区免费观看| 激情久久五月| 久久久久久网站| 美女久久一区| 亚洲人成网站精品片在线观看| 久久一区亚洲| 亚洲第一精品夜夜躁人人爽| 亚洲第一天堂无码专区| 久久综合99re88久久爱| 欧美大片一区二区三区| 亚洲成人在线网| 免费视频一区二区三区在线观看| 男同欧美伦乱| 亚洲精品在线观看视频| 欧美日韩国产综合新一区| 99国产精品| 欧美一级成年大片在线观看| 国产欧美精品在线| 久久久久久久综合狠狠综合| 欧美激情欧美狂野欧美精品| 亚洲理伦电影| 国产精品综合视频| 久久精品国产一区二区电影| 欧美国产一区二区| 亚洲性视频h| 国产亚洲精品成人av久久ww| 久久久免费精品视频| 亚洲电影自拍| 亚洲在线视频免费观看| 国产欧美日韩精品专区| 久久综合久久88| 亚洲人精品午夜| 性欧美1819性猛交| 亚洲国产天堂久久综合| 欧美新色视频| 久久精品一区二区国产| 亚洲精品欧洲精品| 久久久九九九九| 日韩一区二区精品葵司在线| 国产精品色一区二区三区| 久久久久久电影| 99精品欧美一区二区蜜桃免费| 久久精品日韩| 亚洲视频免费在线观看| 国产三区精品| 欧美噜噜久久久xxx| 欧美一区二区精品久久911| 亚洲人成网在线播放| 久久久噜噜噜| 亚洲欧美另类在线观看| 亚洲人成欧美中文字幕| 国产亚洲欧美一区二区| 欧美日韩国产综合新一区| 久久午夜羞羞影院免费观看| 亚洲图片在线| 亚洲精品综合精品自拍| 欧美sm视频| 久久亚洲综合色| 午夜精品久久久久久久99樱桃| 亚洲国产精品视频| 欧美.www| 欧美日韩一区二区三| 国产九九精品| 亚洲国产精品一区二区www| 在线综合亚洲| 日韩特黄影片| 亚洲片区在线| 亚洲日本欧美天堂|