大话数据结构—散列表查找(哈希表)

本文详细介绍了散列表的基本概念,包括散列函数的构造方法如直接定址法、数字分析法等,以及散列冲突的处理策略如开放定址法、再散列函数法。此外,还探讨了散列表查找的性能,强调了散列函数的均匀性和处理冲突的重要性。
摘要由CSDN通过智能技术生成

一、基本概念

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

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

散列技术既是一种存储方法,也是一种查找方法。
散列技术适合求解问题是查找与给定值相等的记录。查找速度快。
散列技术不适合范围查找,不适合查找同样关键字的记录,不适合获取记录的排序,最值。

冲突:关键字key1不等于key2,但f(key1)=f(key2)。
把key1和key2称为散列函数的同义词。

二、散列函数构造

两个原则:

  1. 计算简单
  2. 散列地址分布均匀

1. 直接定址发

f(key)=a x key+b(a、b为常数)

简单,均匀,不会冲突,但是事先知道关键字的分布情况,适合查找表小且连续。

2. 数字分析法

关键字位数多,比如手机号,可能前几位一样,只是后几位不同,抽取关键字的一部分计算散列存储位置。事先知道关键字分布且若干位分布均匀。
这里写图片描述

3. 平方取中法

不知道关键字分布,且位数不是很大。1234,平方1522756,抽取中间227作为散列地址。

4. 折叠法

不知道关键字分布,位数多。
从左到右分割成位数相等的几部分,这几部分叠加求和,并按散列表表长,取后几位作为散列地址。

5. 除留余数法

散列表长m

f(key)=key mod p(p<=m)

p选取不好,产生冲突。
通常p为<=m(最好接近m)的最小质数或者不包含小于20质因子的合数。

6. 随机数法

关键字长度不等。

f(key)=random(key),random随机函数

当关键字为字符串,转化为某种数字来对待,比如ASCLL码或者Unicode码等。

三、散

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值