数据结构-散列表(哈希表)查找

0、前言

顺序表:一个一个挨个查找;

有序查找:二分查找方法;

散列表查找:记录的存储位置=F(关键字)

散列技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。

查找时,根据这个确定的对应关系找到固定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。

我们把这种对应关系f称为散列函数,又称为哈希函数(Hash)。采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或者哈希表

1、散列表的查找步骤

1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录;

2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。

所以说,散列技术既是一种存储方法,也是一种查找方法。

散列技术最适合的求解问题就是查找与给定关健值对应的记录(一对一)。不过散列表不适合范围查找,比如查找一个班级18-22岁的同学,在散列表中没法进行。想获得表中记录的排序也不可能,像最大值、最小值等结果也都无法从散列表中计算出来。

2、散列函数的构造(两个关键字不能出现冲突)

好的散列函数:计算简单和散列地址分布均匀。

1)直接定址法;F(key)=key;

2)数字分析法;

3)平方取中法;

4)折叠法;

5)除留余数法;

6)随机数法;

3、处理散列冲突的方法

 

posted @   kkzhang  阅读(406)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示