哈希表是什么?如何设计哈希函数并解决冲突?

哈希表是一种数据结构,结合了数组和链表的优点,提供平均O(1)的查找时间复杂度。哈希函数用于将关键字转换为存储地址,但冲突是常见问题,可以通过分离链接、开放地址法等方式解决。良好的哈希算法应具备不可逆性、高敏感性和低冲突率。当哈希表满时,可通过再哈希进行扩展。哈希表广泛应用于数据校验、安全加密、负载均衡等领域。
摘要由CSDN通过智能技术生成

今天学习大名鼎鼎的Hash Map。

哈希表概念

哈希表又叫散列表。和二叉树、链表类似,哈希表就是一种数据结构,设计出来用于存放数据。

构造

哈希表是一个指针数组,存有很多个keys,每个关键字都有对应的values,可以想象成一个字典。

数组和链表的优缺点:
数组寻址容易,插入和删除元素难;链表寻址困难,插入和删除元素容易。

哈希表结合数组和链表,keys用array实现,每个array的值会指向个链表。
但Array里的元素时有顺序的,HashMap没有;且Array的overhead比较小,HashMap实现复杂。

为什么设计哈希表?

在哈希表中增删改查一个特定的元素,只需要平均O(1) 的时间复杂度,而搜索二叉树的查找速度是O(logN)。
根据设定的哈希函数以及处理冲突的方法将查找表中各数据元素存储在一段有限的连续空间中,就能得到哈希表。

查找

在一般的查找过程中,时间主要用于关键字值之间的比较。

是否可以不通过关键字值之间的比较就得到需要的记录?
在待查记录的关键字值与它的存储位置之间建立一个确定的对应关系

在哈希表中查找元素

与将元素

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值