哈希表

使用hash函数将关键值映射到储存位置。

简单常用的hash函数有:

1.除留余数法:一般选择一个较大的素数做 被除数,直接求余。

2.平方取中法:将关键值平方,然后取 x ^ 2的中间一部分作为哈希结果。

3.折叠法: 将关键值从左到右分为位数相等的几部分,每个部分的位数与哈希表地址的位数相同。折叠的方法有两种 一种是 移位:将各部分的最后一位对齐。分界:s型折叠。。。

4.数据分析法:对于已知数据分析其中数字特性获得一部分均匀的数字分部,取下作为hash结果,这种方法,感觉没太大的意义。


哈希表中冲突是难以避免的,使用两种常用的解决冲突的方法,拉链和开地址。


拉链法:

又称开散列法,又称闭散列法。

拉链法在哈希表中存放的是 哈希结果为对应值的全部元素组成的链表的表头节点,没有成员时为NULL,链表中成员是无序的。


开地址法:

开地址法不扩展空间来储存多余的关键值,而是若哈希结果所在的哈希表中已被占据,则使用一些函数使其寻找一个新的地址来存放结果。

而对于搜索对应hash值的元素时,按照相同的顺序进行查找,若遇到关键值则查找到,若遇到空位置,则表示哈希表中不包含这个值,若又回到起始地址,则表示表已满,且未查到。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值