散列表(哈希表)

本文介绍了散列表(哈希表)的概念,通过散列函数快速访问数据。讨论了多种散列函数,如直接定址法、数字分析法、除留余数法等,并详细阐述了散列冲突的解决方法,包括开放定址法、拉链法、再散列等。还特别提到了HashMap和Hashtable的实现,并分析了不同散列方法在处理int和double类型数据时的表现。
摘要由CSDN通过智能技术生成

一)散列表(哈希表)

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

 

二)散列函数

散列函数:能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。

1)直接定址法:取关键字或关键字的某个线性函数值为散列地址,即f(key)=a * key +b,a和b为常数。需先知道关键字的分布情况,适合查找表较小且连续的情况。

2)数字分析法:根据关键字位数规则判断,通常适合处理关键字位数比较大的情况。

3)除留余数法:f(key) = key % p (p <= m),最常用。

4)平方取中法:当无法确定关键字的分布,而位数又不是很大的情况。可根据关键字的平方值,获取平方数中间的几位数,如,666^2=443556,就取35或4355。

5)折叠法:将关键字分成位数相同的几部分,比如关键字为987654321,按4位分为一组,为9876|5432|1,然后折叠求和,9876+5432+1=15309。不需要知道关键字的分布,适合关键字较多的情况。

6)随机数法:f(key)=random(key),random为一个随机函数。通常用于关键字长度不等的情况。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值