9-3 直接定址法

1. 直接定址法

哈希函数为关键字的线性函数

H(key) = key     或者    H(key) = a ´ key + b

特点:地址集合的大小 = 关键字集合的大小

2.除留余数法(最常用)

构造:取关键字被某个不大于哈希表表长 m 的数 p 除后所得余数作哈希地址,即 H(key) = key MOD p,  p <=  m。

特点:简单,可与上述几种方法结合使用。  p 的选取很重要;p 选得不好,容易产生同义词

给定一组关键字:12, 39, 18, 24, 33, 21,若取 p = 9, 则他们对应的哈希函数值将为: 3, 3, 0, 6, 6, 3

处理冲突的方法

1.“处理冲突”的实际含义是:为产生冲突的地址寻找另一个哈希地址。

为产生冲突的地址 H(key) 求得一个探查地址序列: H0, H1, H2, …, Hs     1≤s≤m - 1  

2.其中:Hi = ( H(key) + di ) MOD m    i =1, 2, …, s  沿此序列逐个地址探查,直到找到一个空位置(开放的地址), 将发生冲突的记录放到该地址中。

3.对增量 di  有三种取法:

 线性探测再散列:di  = 1, 2, 3, …, m-1

 二次探测再散列(平方探测再散列 ):di  = 1², -1², 2², -2², 3², …, ±k²  (k £ m/2)  

 伪随机探测再散列(双散列函数探测再散列 ):di  = 伪随机数序列

 

例:表长为 11 的哈希表中已填有关键字为 17,60,29 的记录, H(key)=key MOD 11,现有第 4 个记录,其关键字为 38,按三种处理冲突的方法,将它填入表中

  1.  H(38)=38 MOD 11=5    冲突

H1=(5+1) MOD 11=6    冲突

H2=(5+2) MOD 11=7    冲突

H3=(5+3) MOD 11=8    不冲突   

  1.  H(38)=38 MOD 11=5      冲突

    H1=(5+1²) MOD 11=6    冲突

    H2=(5-1²) MOD 11=4     不冲突  

  1.  H(38)=38 MOD 11=5    冲突

    设伪随机数序列为 9,则:

H1=(5+9) MOD 11=3    不冲突

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值