数据结构与算法(六)

哈希

(一) Hash表的实现

hash表的实现主要包括构造哈希和处理哈希冲突两个方面

1、 构造哈希

  • 主要包括直接地址法、平方取中法、除留余数法等。

2、 处理哈希冲突

  • 最常用的处理冲突的方法有开放定址法、再哈希法、链地址法、建立公共溢出区等方法。(当哈希表关键字集合很大时,关键字值不同的元素可能会映象到哈希表的同一地址上,这样的现象称为哈希冲突。)
(1) 开放定址法
  • 当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。
  • 缺点:删除元素的时候不能真的删除,否则会引起查找错误,只能做一个特殊标记。直到有下个元素插入才能真正删除该元素。
  • 线性探查法:从发生冲突的单元起,依次判断下一个单元是否为空,当达到最后一个单元时,再从表首依次判断。直到碰到空闲的单元或者探查完全部单元为止。探查序列步长值固定为 1
  • 平方探查法:发生冲突时,用发生冲突的单元 d[i], 加上 1²、 2² 等。即 d[i] + 1²,d[i] + 2², d[i] + 3²… 直到找到空闲单元。探查序列步长值是探查次数 i 的两倍减 1
  • 双散列函数探查法:使用两个散列函数,一个散列函数以关键字为自变量,产生一个0-m-1(m为哈希表长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值