哈哈哈哈希

目录

0.基本概念

1.散列函数的构造方法

1.直接定址法

2.质数除余法

3.平方取中法

4.折叠法

5.数字分析法

6.随机数法

7.构造Hash函数所需要考虑的几个方面

2.解决冲突的方法

1.开放定址法

2.再散列法

3.链地址法

4.公共溢出区建立法

3.平均查找长度


 

 

既是查找技术,也是存储技术。

适用于实际出现的关键字数目远小于可能取值的数目的情况。

0.基本概念

1.哈希函数【散列函数】:Key为关键字,H【Key】为Key在表中的位置

2.哈希地址:由Hash函数得到的存储位置。

3.装填因子:散列表空间大小为n,填入表中的节点个数为m,α = m / n 。

4.冲突【Collision】:H【K1】= H【K2】。

5.同义词:发生冲突的K1与K2。

6.哈希表:根据哈希函数 H【Key】和所选中的解决冲突的方法,将一组关键字映射到一个有限的、地址连续的地址集合(地址区间)上,如此得到的查找表为“哈希表”。

哈希表分为:内散列表(数组)与外散列表(链表)

1.散列函数的构造方法

「非数字型的关键字要先进行数字化处理」

1.直接定址法

H【Key】 =  Key ,或者 H【Key】 =  k * Key  +  b (也就是使用一个一一映射的双射函数)

优点:没有冲突。                 
缺点:关键字集合很大时,浪费严重。

2.质数除余法

设桶数为 B ,取质数 m  <=  B ,H(Key) =  Key  %  m 。

0cb8d612a3314f5c98dff94af6b4917e.png

 

3.平方取中法

取 Key * Key 所得数值的中间的几位数为散列地址。

目的是扩大差别,且能受到整个关键字各个数位的影响。

b12f2507bd5741e784e040d89b7160ea.png

 

4.折叠法

将关键字分割成若干部分,然后取其叠加和为哈希地址。

两种叠加方式:位移叠加,间界叠加。

适用于关键字位数特别多的情况。

f6cbcf16c6ce44bab192f49c124740e9.png

 例如图书编号: 0-442-20586-4

5864 + 4220 + 04 = 10088

左:位移叠加—— H(Key) =  0088 「对齐」

右:间界叠加—— H(Key) =  6092 「折叠」

5.数字分析法

仅适用于能够预先估计出全体关键字的每一位上的各种数字出现的频率。

 

db68f8417bdd4c9287344f668a3451f6.png

6.随机数法

用于应对长度不等的关键字

c3d49aee07a14bfea5b600ae7aab36a4.png

 

7.构造Hash函数所需要考虑的几个方面

取决于关键字集合的情况,关键字的大小、范围、类型、特征。

总原则是产冲突的可能性尽可能地小。

1.计算Hash函数所需要的时间

2.关键字的长度

3.散列表的大小

4.关键字的分布情况

5.记录的查找频率

 

2.解决冲突的方法

1.开放定址法

498f12e8d01a4a639fc48e6436728851.png

 

611aa3f5bc9747a58fbe4c189862d401.png

21647bf2f33e489d9a372becc72967bd.png

 

2.再散列法

H(key) = key % 13

key 为关键字,采用开放地址法中的线性探测再散列解决冲突

依次输入11 个关键字:16,74,60,43,54,90,46,31,29,88,77

构造哈希表 

a9b5477cc5704932852479b676e25448.jpeg 

97055f4c0b8e4e5b86a66ad6a5f0b7df.jpeg

设关键字序列为:(62,30,18,45,21,78,66,32,54,48),
哈希函数为:hash(k) =k % 11,
采用二次探测再散列处理冲突,将其散列到地址空间为0到10的哈希表中,
在等概率条件下查找成功时的平均查找长度为?
探测过程:x+ 1^2, x - 1^2,x+ 2^2, x - 2^2
 

2950bf798d77429e8b7edf0026c05930.png

 如图,例如45%11=1,放在1的位置,78%11=1,位置冲突,探测1+1^2=2位置,2位置没有关键字则放入,否则继续探测。
平均查找长度ASL=(1+1+3+1+1+2+1+3+4+1)/10=1.8

3.链地址法

f9bba43639dc4c6983440bea9ba6969f.png

 

8064f70384ad4b98beb3fd563e7eac8d.png

 

 5aaf4af41bcb42a3a7da340a2ffc6838.png

9bae07a94d5b4d65bfce24b6e59a751f.png

 

 

4.公共溢出区建立法

 

3.平均查找长度

ASL 

1.选用的哈希函数

2.选用的处理冲突的方法

3.饱和程度「装填因子」

默认各个位置存储数据的概率是相等的。

c0b2834e7b634b70a4a84ed6425c928f.png

 aaf4a032ea784780bdbccb278cbc3b21.png

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值