哈希函数特征,哈希表原理及冲突的解决办法

.哈希表的函数特征及实现原理

哈希函数的特征

 •  int fun(string)  输入域无穷大,输出域有限  //f就是哈希函数,哈希函数有很多种

 •  不同的输入,可能会有相同的输出  //会产生哈希冲突

 •  相同的输入,输入一定相同  //便于查找修改删除元素

 •  类似的输入,通过打乱,然后得到均匀

哈希原理

 第一步:通过哈希函数得到一个值 buckectnum=fun()%n

 第二步:这个值便是桶号  //即桶号为0~n-1;

 第三步:把数据对放到相应的桶里面去

哈希冲突的解决方案

 •开放地址法 即若相应桶号已有元素便放到下一位  //浪费桶的个数

 •再哈希法  即换个哈希函数直到没有冲突为止 

 •链地址法  即每个桶里面装的是链表的头节点  //节省空间但是如果链表过长会增加时间复杂度 o(n);

 •建立一个公共溢出区  //  为所有冲突的关键字记录建立一个公共的溢出区来存放。在查找时,对给定关键字通过散列函数计算出散列地址后,先与基本表的相应位置进行比对,如果相等,则查找成功;如果不相等,则到溢出表进行顺序查找。如果相对于基本表而言,在有冲突的数据很少的情况下,公共溢出区的结构对查找性能来说还是非常高的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Everly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值