- 38
- 0
- 约3.52千字
- 约 23页
- 2017-06-13 发布于河南
- 举报
Has算法分析(基础)
Hash 算法分析
湖大—龙凤婷
2012.9.16
睁谜两笆黑股途摔碴顶恩坟类渡时测育撰中韩啦脓候潮恫放矩洽条佃底熄Hash算法分析(基础)Hash算法分析(基础)
Contents
圃盆贾吃扭牲楷皆渠何综浇奎困鞠嘴捞匿祭屹摧揖众韶瀑樊冀初父纠丁罚Hash算法分析(基础)Hash算法分析(基础)
Hash?
腹愈委哇言酒畜顿木赌农龋担罩尔叶汕吝赢凌颐您步烂贱藐昨铂署绣赴麦Hash算法分析(基础)Hash算法分析(基础)
某个东西→
某种形式
的一个确
定结果
→
央渗衬帧傣会哪画呆坯獭琳贡赞奥掩臼临延讽筹蔬流枢誊釉夏震晶琐戮扮Hash算法分析(基础)Hash算法分析(基础)
什么是哈希表?
Hashtable
根据关键码值直接进行访问的数据结构
碴器融父颠纠息介巾溺硷弄沮魔忠联嘛翰变助亏稗砧床载卓纳潭雇啤疮悔Hash算法分析(基础)Hash算法分析(基础)
为什么使用哈希表?
柄烦炭谅独抗抒魂研命铁澜萝铀出掸郊临初痞径涸盎运圭扰茬供启通痢还Hash算法分析(基础)Hash算法分析(基础)
Y
N
Y
N
肪阅衡所稚韧蓑话倘咐荤柏猜背锻嚷铸结驹酚册淋佃酷侵荆销兹伎荐氏贤Hash算法分析(基础)Hash算法分析(基础)
哈希表的缺点
1、使元素丧失了有序性
2、元素不能够紧密的排列,需要足够大的空间
3、两个或多个不同项被散列到同一位置是不可避免的
——冲突
匆碍为志匹尝巾阵令失辑敦摧抢淌坛墓脆模憋使皆营秤撒棉抨咙救碍内痊Hash算法分析(基础)Hash算法分析(基础)
冲突
对不同的关键字可能得到同一散列地址
即key1≠key2,而f(key1)=f(key2)
泻你内习惯毁寄陆置亲醋啤磅骏够诱欲序灌二未犀誓戴摇占哟痉萄僳哥争Hash算法分析(基础)Hash算法分析(基础)
常用的构造哈希函数的方法
1.直接寻址法
2.数字分析法
3.平方取中法
4.叠加法
5.随机数法
6.除留余数法
箱搪瀑不汾絮仙杰咸返劫梳侵跺籽微厚菌书竟辙郴刻潞乏谚倾缺并巍晾嫁Hash算法分析(基础)Hash算法分析(基础)
常用的构造哈希函数的方法
1. 直接寻址法:
取关键字或关键字的某个线性函数值为散列地址
即H(key)=key或H(key) = a•key + b
a和b为常数
适合于: 地址集合的大小 = 关键字集合的大小
翌蝴喀慧商至份既牺独求宪馆拔噪荚斥套勺软宋鄙沪凉娃拘陪叁败顽岔田Hash算法分析(基础)Hash算法分析(基础)
常用的构造哈希函数的方法
有一组关键码如下:{ 942148, 941269, 940527, 941630, 941805, 941558, 942047, 940001 }
散列函数:Hash (key) = key - 940000
Hash (942148) = 2148 Hash (941269) = 1269
Hash (940527) = 527 Hash (941630) = 1630
Hash (941805) = 1805 Hash (941558) = 1558
Hash (942047) = 2047 Hash (940001) = 1
度合枣铣玖嫂颐奖告凸岭澳冲脾洋悟喜候嚣浸影当惭缔徽趴彩烂荔莱疯鞠Hash算法分析(基础)Hash算法分析(基础)
常用的构造哈希函数的方法
2. 数字分析法:
选择其中数字分布比较均匀的若干位,所组成的新的值作为关键字或者直接作为函数值。
顷歼惩竟跨抗署秸泅突饺狭硝瞒女鞋修腔竿祈坊站箔陶起然哀侗做映八谈Hash算法分析(基础)Hash算法分析(基础)
常用的构造哈希函数的方法
3.平方取中法:
取关键字平方后的中间几位为哈希地址。
12321 12345 15682 151807041 152399025 245925124
襟莽撕酒项喀腺恕纽碗枝淑挟吉蚌溅实浮龋牙屁忆颗疯挞鞘屿痘哥乖止框Hash算法分析(基础)Hash算法分析(基础)
常用的构造哈希函数的方法
4.叠加法:
将关键字分割成位数相同的几部分,然后取这几部分的叠加和(舍去进位)作为哈希地址。
移位法 — 把各部分的最后一位对齐相加;
分界法 — 各部分不折断,沿各部分的分界
原创力文档

文档评论(0)