哈希散列

哈希散列技术通过散列函数将关键字映射到存储位置,实现快速查找。设计散列函数要考虑计算简单和地址分布均匀,常见的方法包括直接定址法、数字分析法等。处理冲突有开放定址法、再散列函数法、链地址法和公共溢出区法。散列表查找性能取决于散列函数的均匀性、冲突处理方式和装填因子。
摘要由CSDN通过智能技术生成

哈希散列技术:存储位置=f(关键字)

这样就可以通过查找关键字不需要比较就可以获得需要的记录的存储位置。

哈希技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(key)。

把对应关系f称作散列函数,又称哈希函数。采用散列技术将记录存储在一块连续的储存空间中,这块连续的存储空间称为散列表或哈希表,关键字对应的记录存储位置称为散列地址。

哈希表查找步骤

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

(2)查找记录时,通过散列函数计算记录的散列地址,按照此散列地址来访问记录。

因此散列技术既是一种存储技术,也是一种查找技术。它与线性表,二叉树,图等数据结构不同的是,他们的元素之间都存在某种逻辑关系,而散列技术的记录之间不存在什么逻辑关系,只与关键字有关,因此散列技术主要是面向查找的存储结构。

设计一个简单,均匀,存储利用率高的散列函数是散列技术中最关键的问题。

冲突:2个关键字key1!=key2,但却有f(key1)=f(key2),这就是冲突,并把key1和key2称为散列函数的同义词。

散列函数构造方法

设计散列函数的2个原则

(1)计算简单:散列函数的计算时间不应该超过其他查找技术与关键字比较的时间。

(2)散列地址分布均匀:解决冲突的最好办法就是尽量让散列地址均匀分布在存储空间,这样可以保证存储空间的有效利用,并减少为处理冲突而耗费的时间。

1 直接定址法

f(key)=key;
f(key)=a*key+b;   (a,b为常数)

就是取关键字的某个线性函数值为散列地址。

优点:简单均匀,不会产生冲突。

缺点:需要事先知道关键字分布情况,适合查找较小且连续的情况。

现实生活中不常用。

2 数字分析法

关键字的位数较多时,我们可以抽取关键字的一部分来计算散列存储地址。

譬如:手机号码作为关键字时,由于手机号前7位重复的概率比较大,采用前7位来计算哈希地址很容易冲突&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值