数据结构与算法三【哈希表】

1哈希表

在这里插入图片描述
一个数组就是一个哈希表,其中数组的下标是哈希表的索引,数组内的值是哈希表的元素。
这样,我们通过索引可以直接找到对应的元素时间复杂度就是O(1)
有了哈希表,我们就可以快速检索一个元素是否存在于集合中。(注:要通过集合首先构建哈希表)

哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)

哈希表是根据关键码的值而直接进行访问的数据结构。

2哈希函数

哈希函数,把学生的姓名通过哈希函数直接映射为哈希表上的索引,然后就可以通过查询索引下标快速知道这位同学是否在这所学校里了。
哈希函数如下图所示,通过hashCode把名字转化为数值,一般hashcode是通过特定编码方式,可以将其他数据格式转化为不同的数值,这样就把学生名字映射为哈希表上的索引数字了

3哈希碰撞

学生A和学生B都映射到了索引下标 1 的位置,这一现象叫做哈希碰撞。
一般哈希碰撞有两种解决方法, 拉链法和线性探测法。

拉链法

在这里插入图片描述

线性探测法

使用线性探测法一定要保证tableSize大于dataSize

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值