Tauruser
Enjoy Every Day
posts - 34, comments - 95, trackbacks - 0, articles - 5
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
查找字符串的哈希方法(zz)
Posted on 2006-06-21 15:39
Tauruser
閱讀(2367)
評論(2)
編輯
收藏
引用
?
//
?RS?Hash?Function
unsigned?
int
?RSHash(
char
?
*
str)
{
????????unsigned?
int
?b?
=
?
378551
;
????????unsigned?
int
?a?
=
?
63689
;
????????unsigned?
int
?hash?
=
?
0
;
????????
while
?(
*
str)
????????
{
????????????????hash?
=
?hash?
*
?a?
+
?(
*
str
++
);
????????????????a?
*=
?b;
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?JS?Hash?Function
unsigned?
int
?JSHash(
char
?
*
str)
{
????????unsigned?
int
?hash?
=
?
1315423911
;
????????
while
?(
*
str)
????????
{
????????????????hash?
^=
?((hash?
<<
?
5
)?
+
?(
*
str
++
)?
+
?(hash?
>>
?
2
));
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?P.?J.?Weinberger?Hash?Function
unsigned?
int
?PJWHash(
char
?
*
str)
{
????????unsigned?
int
?BitsInUnignedInt?
=
?(unsigned?
int
)(
sizeof
(unsigned?
int
)?
*
8
);
????????unsigned?
int
?ThreeQuarters????
=
?(unsigned?
int
)((BitsInUnignedInt??
*
?
3
)
?
/
?
4
);
????????unsigned?
int
?OneEighth????????
=
?(unsigned?
int
)(BitsInUnignedInt?
/
?
8
);
????????unsigned?
int
?HighBits?????????
=
?(unsigned?
int
)(
0xFFFFFFFF
)?
<<
?(BitsInU
nignedInt?
-
?OneEighth);
????????unsigned?
int
?hash?????????????
=
?
0
;
????????unsigned?
int
?test?????????????
=
?
0
;
????????
while
?(
*
str)
????????
{
????????????????hash?
=
?(hash?
<<
?OneEighth)?
+
?(
*
str
++
);
????????????????
if
?((test?
=
?hash?
&
?HighBits)?
!=
?
0
)
????????????????
{
????????????????????????hash?
=
?((hash?
^
?(test?
>>
?ThreeQuarters))?
&
?(
~
HighBits)
);
????????????????}
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?ELF?Hash?Function
unsigned?
int
?ELFHash(
char
?
*
str)
{
????????unsigned?
int
?hash?
=
?
0
;
????????unsigned?
int
?x????
=
?
0
;
????????
while
?(
*
str)
????????
{
????????????????hash?
=
?(hash?
<<
?
4
)?
+
?(
*
str
++
);
????????????????
if
?((x?
=
?hash?
&
?
0xF0000000L
)?
!=
?
0
)
????????????????
{
????????????????????????hash?
^=
?(x?
>>
?
24
);
????????????????????????hash?
&=
?
~
x;
????????????????}
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?BKDR?Hash?Function
unsigned?
int
?BKDRHash(
char
?
*
str)
{
????????unsigned?
int
?seed?
=
?
131
;?
//
?31?131?1313?13131?131313?etc..
????????unsigned?
int
?hash?
=
?
0
;
????????
while
?(
*
str)
????????
{
????????????????hash?
=
?hash?
*
?seed?
+
?(
*
str
++
);
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?SDBM?Hash?Function
unsigned?
int
?SDBMHash(
char
?
*
str)
{
????????unsigned?
int
?hash?
=
?
0
;
????????
while
?(
*
str)
????????
{
????????????????hash?
=
?(
*
str
++
)?
+
?(hash?
<<
?
6
)?
+
?(hash?
<<
?
16
)?
-
?hash;
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?DJB?Hash?Function
unsigned?
int
?DJBHash(
char
?
*
str)
{
????????unsigned?
int
?hash?
=
?
5381
;
????????
while
?(
*
str)
????????
{
????????????????hash?
+=
?(hash?
<<
?
5
)?
+
?(
*
str
++
);
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
//
?AP?Hash?Function
unsigned?
int
?APHash(
char
?
*
str)
{
????????unsigned?
int
?hash?
=
?
0
;
????????
int
?i;
????????
for
?(i
=
0
;?
*
str;?i
++
)
????????
{
????????????????
if
?((i?
&
?
1
)?
==
?
0
)
????????????????
{
????????????????????????hash?
^=
?((hash?
<<
?
7
)?
^
?(
*
str
++
)?
^
?(hash?
>>
?
3
));
????????????????}
????????????????
else
????????????????
{
????????????????????????hash?
^=
?(
~
((hash?
<<
?
11
)?
^
?(
*
str
++
)?
^
?(hash?
>>
?
5
)));
????????????????}
????????}
????????
return
?(hash?
&
?
0x7FFFFFFF
);
}
比較經典的字符串hash就這些了吧,"ELF Hash Function" <-這個比較常用..
Feedback
#
re: 查找字符串的哈希方法(zz)
回復
更多評論
2007-10-05 17:04 by
秒大刀
不錯,好東西
非常感謝!
#
re: 查找字符串的哈希方法(zz)
回復
更多評論
2007-12-23 10:51 by
哈哈
感謝~很好!
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © Tauruser
日歷
<
2007年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
公告
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
(16)
MFC(2)
計算機圖形學(2)
密碼學
數學模型
數值計算(2)
算法與數據結構(9)
信息論(1)
隨筆檔案
(34)
2007年3月 (1)
2007年2月 (2)
2007年1月 (1)
2006年10月 (1)
2006年6月 (3)
2006年5月 (5)
2006年4月 (6)
2006年3月 (14)
2006年2月 (1)
文章分類
(5)
密碼學
數學模型
數值計算
算法與數據結構(4)
網絡(1)
信息論
文章檔案
(5)
2006年4月 (1)
2006年3月 (4)
相冊
文章貼圖
收藏夾
(3)
我的收藏(3)
協議
流媒體
中國協議網
友情鏈接
Orlaa
最新隨筆
1.?CListCtrl For Beginners(轉載)
2.?結構體對齊的具體含義(#pragma pack) (轉載)
3.?MFC ComboBox 使用方法(轉載)
4.?05年寫的直線裁剪算法
5.?C# Coding時的注釋格式(zz)
6.?查找字符串的哈希方法(zz)
7.?木馬客戶端與服務端通訊如何隱藏不被發現
8.?Gauss消去法直接求解方程組(附例程)
9.?使用AsycnSocket類進行簡單雙機通訊
10.?Romberg求積(例程)
搜索
積分與排名
積分 - 106420
排名 - 237
最新評論
1.?re: 雙鏈表模版類的實現
問下:關于查找(search)那部分,我有點小問題要問,就是你直接就靠默認的比較操作符來比較,而你所用的是模版,鏈表支持各種類型,那么是字符串類型的鏈表或自定義類型的呢,你該怎么辦
--周曉榮
2.?re: OnSize()加入處理函數后,DEBUG報告出錯
評論內容較長,點擊標題查看
--NULL
3.?re: C風格字符串與標準庫string類型性能對比
評論內容較長,點擊標題查看
--Hzj_jie
4.?re: 05年寫的直線裁剪算法
你這個算法也太復雜了吧
--啊啊啊啊啊啊
5.?re: C++ Primer Fourth Edition (download file)
i want english edition
--zhccc
閱讀排行榜
1.?MFC ComboBox 使用方法(轉載)(18748)
2.?結構體對齊的具體含義(#pragma pack) (轉載)(11462)
3.?Tab Control控件使用的例子(zz)(8362)
4.?MAC地址有合法不合法之分嗎?(7603)
5.?VC++2005 比 VC++ 6.0 退步了?(7542)
評論排行榜
1.?C風格字符串與標準庫string類型性能對比(20)
2.?VC++2005 比 VC++ 6.0 退步了?(12)
3.?OnSize()加入處理函數后,DEBUG報告出錯(8)
4.?為什么在VS2005重載輸出運算符那么難?(7)
5.?Gauss消去法直接求解方程組(附例程)(7)
成人精品一区二区久久
|
国产成人精品久久亚洲
|
国产成人精品综合久久久
|
久久人妻无码中文字幕
|
久久久久久人妻无码
|
a级毛片无码兔费真人久久
|
亚洲精品国产自在久久
|
99久久人妻无码精品系列
|
国产毛片久久久久久国产毛片
|
热久久国产精品
|
思思久久好好热精品国产
|
伊人久久大香线蕉综合Av
|
国产午夜电影久久
|
久久天天躁狠狠躁夜夜不卡
|
一本大道加勒比久久综合
|
少妇高潮惨叫久久久久久
|
久久久久国产一级毛片高清板
|
亚洲国产另类久久久精品黑人
|
久久久久国产一区二区
|
久久综合久久综合九色
|
久久婷婷国产综合精品
|
久久无码AV一区二区三区
|
狠狠色综合久久久久尤物
|
www.久久精品
|
久久精品国产秦先生
|
久久国产精品成人片免费
|
狠狠色婷婷久久综合频道日韩
|
久久精品视频91
|
久久精品国产一区二区电影
|
99久久亚洲综合精品成人
|
久久亚洲国产午夜精品理论片
|
久久精品亚洲精品国产色婷
|
欧美喷潮久久久XXXXx
|
国产A级毛片久久久精品毛片
|
亚洲精品NV久久久久久久久久
|
狠狠色综合网站久久久久久久
|
国产免费久久精品丫丫
|
久久99精品久久久久久秒播
|
久久福利片
|
久久99热这里只频精品6
|
中文字幕精品久久
|