哈希表概述

哈希: 

就是找一个数据内容和数据存放地址之间的映射关系。

在直接寻址方式下,具有关键字k的元素被存放在了槽k中,

在散列方式下,该元素存放在槽h(k)中,即利用散列函数h计算出槽的位置。


哈希函数的两个问题:

1、哈希函数的选择

2、冲突的解决方式

哈希函数:

1、除法散列法, h(k) = k mod m

      将k映射到m个槽中的一个, 其中m一般选择不太接近2的幂次方的素数。

2、乘法散列法,

      1. 先将关键字乘上常数A(0<A<1),并且提取kA的小数部分

      2. 用m乘以这个小数部分,再向下取整。

          A一般取黄金分割比 0.618 (根号5 - 1)/ 2

解决冲突的方法:

  1. 链表法: 不同键值映射到相同的槽中,就在该槽后用链表链接。

  2. 开方寻址法:1.线性探查  2. 二次探查 3. 双重散列

线性探查:

        h(k, i) = (h'(k) + i) mod m     i从0开始,如果被占用,i就加1,直到找到未被占用的槽。

二次探查

         h(k, i) = (h'(k) + C1i + C2i2 ) mod m  C1, C2是正的辅助常数, 选择比较苛刻

双重散列:

        h(k, i) = [ h1(k) + i*h2(k) ] mod m  用于开放寻址法的最好方法之一

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值