哈希表

哈希,hash,也叫散列,杂凑。

按我的理解:

散列函数,就是对于指定的值,经过这个函数计算,可以得到一个结果。

哈希表,就是这么一个表:将数据存放在按照散列函数计算结果位置上,或者发现该位置已被占用,即有冲突的情况下,按照一定规则,制止找到一个新位置存放为止。那么反过来,利用这个哈希表,给出指定值,按照散列函数和规则,就能找到存放于其中的数据。

所以说,哈希表就是用来加快查找的一种表。是一种专门用来处理数据有冲突的一种表。

因此,哈希表最适合用在高并发的场合。

以前读书的时候,有教《数据结构》,但根本不清楚为什么要搞这么个哈希表。工作以后,也时不时撞见哈希哈希什么的,但还是不理解。都说IT从业门槛低,别的专业,甚至上几天培训班的也来跟我们计算机专业出身的抢饭吃,而且还很抢得很凶。一方面说明计算机技术是比较简单的技术,只要是个人,自学几天就能上手;另一方面,是我这种资质平庸又不争气的计算机专业学生读书不求甚解的报应。学计算机,应该努力弄清楚原理,否则很容易在五花八门,一日千里的各种技术中疲于奔命。

所以,工作十几年以后,我居然回头重新学习数据结构。

常用哈希表

哈希表的关键技术之一就是要处理好元素的冲突,采用不同的冲突处理方法就可以得到不同的哈希表。

1、线性哈希表

最简单的一种哈希表。当冲突发生时,后来者循原本应在位置向前+1,直至找到一个空位置。


2、随机哈希表

当冲突发生时,后来者随机找到新位置


3、溢出哈希表

线性哈希表和随机哈希表有两个致命缺点:

1)可能会造成新的冲突

2)哈希表填满后不能再正常处理

而溢出哈希表包括哈希表和溢出表两部分。在哈希表填入过程中,如果有冲突,就将冲突的后来者填入溢出表。这样就避免了因为要处理冲突而产生新的冲突。


4、拉链哈希表

每个元素并不存储元素值本身,而是指针。有冲突的位置,会跟着一串争夺这个位置的链表。

分为外链哈希表和内链哈希表


5、指标哈希表

包括指标表和内容表两部分。

指标表就是个哈希表,可以是上述任意类型,但存储的是元素在内容表中的指针。元素存储在内容表中。

好处就是省存储空间。


转载于:https://www.cnblogs.com/leftfist/p/4257868.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值