散列表(哈希表)

哈希表是一种数据结构,通过散列函数将关键字映射到存储地址,实现快速查找。然而,不同关键字可能映射到同一地址,导致冲突。解决冲突的方法包括链接法和开放寻址法。链接法通过链表处理同一散列地址的关键字,开放寻址法则在发生冲突时寻找下一个空闲地址。散列函数设计需考虑均匀分布和简单计算,以降低冲突率并优化性能。
摘要由CSDN通过智能技术生成

散列表(Hash table 哈希表)

1、背定义
根据给定的关键字来计算出关键字在表中地址的数据结构。
散列表建立了关键字和存储地址之间的一种直接映射关系,这个映射叫做散列函数,存放记录的数组叫做散列表
Hash(key)=Addr。
2、分析
1)散列函数,又称为哈希(Hash函数),采用散列技术把纪录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表。
2)关键字、散列地址、类似与x1和x2两个不同的变量,可能出现相等的函数值一样,两个不同的关键字可能映射到同一个散列地址,该情形被称为冲突****。对于具有相同函数值的关键字在这里称为同义词
3)构造函数要点
a.散列函数的定义域必须包含全部需要存储的关键字,而值域的范围则依赖于散列表的大小或地址范围。
b.散列函数计算出来的地址应该等概率、均匀地分布在整个地址空间,从而减少冲突的发生。
c.散列函数应尽量简单,能够在较短时间内就计算出任一关键字对应的散列地址。
4)冲突:若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数,这就是使关键字经过散列函数得到一个“随机的地址”,从而减少碰撞。但其实散列是随机的就不能体现完全均匀,因而需要进一步了解其他方法。

3、通过链接法解决冲突
看图
在这里插入图片描述看槽中变化,把散列到同一槽中的所有元素(相同哈希值的)都放在一个链表中,槽j中有一个指针,它指向存储所有散列到j的元素的链表的表头;如果不存在这样的元素,则槽j中为NIL.
4.开放寻址法解决冲突*
5、散列函数构造方法
6、散列表性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值