哈希表的构造之线性探测法

本文介绍了哈希表的定义、常见的散列函数方法,重点讲解了线性探测法解决哈希冲突的原理,以及负载因子、哈希表扩容和字符串哈希等问题。
摘要由CSDN通过智能技术生成

            哈希表在我们实际生活中运用的还是相当广泛的,比如:海量数据处理的时候,当然是要在哈希上进行变通拓展的。要想能运用它就得了解它,下来我们就先从哈希表的基础说起。

1.哈希表的定义

哈希表(Hash table,也叫散列表),是依据关键码值(Key)而直接进行访问在内存存储位置的数据结构。也就是说,它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

2.构造哈希表经常使用的散列函数的方法有:

(1)直接定址法---取关键字的某个线性函数为散列地址,Hash(Key)= KeyHash(Key)= A*Key + B,A、B为常数。但是这种方法有很大的缺陷,就是当关键码比较分散时,hash表的所浪费的空间是非常大的。

(2)除留余数法---取关键值被某个不大于散列表长m的数p除后的所得的余数为散列地址。Hash(Key)= Key% P。

(3)平方取中法---取key平方后的中间几位作为散列地址。

(4)折叠法------将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址。数位叠加可以有移位叠加和间界叠加两种方法。移位叠加是将分割后的每一部分的最低位对齐,然后相加;间界叠加是从一端向另一端沿分割界来回折叠,然后对齐相加。

(5)随机数法-----选择一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值