数据结构与算法基础(青岛大学-王卓)—学习笔记Chapter Nine散列表Hash

本文介绍了散列表的概念,强调其查找效率高但空间效率低的特点。讲解了散列表的基本操作,包括散列函数的构造方法如直接定址法和除留余数法。此外,详细阐述了散列表的查找过程,比较了拉链法和开放定址法的平均查找长度。最后,讨论了散列表的存储结构和解决冲突的策略,如开放定址法的线性探测和链地址法的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

9.1散列表的定义(逻辑结构)

散列表又叫分凑表,哈希表,是记录的存储位置与关键字之间存在对应关系 ,散列表的优点是查找效率高,但是缺点是空间效率低。

9.2散列表的基本操作

散列函数(hash函数 Loc(i)=H(keyi) 又叫杂凑函数,哈希函数,是散列方法中使用的转换函数 。

根据元素集合的特性构造要求,一是n个数据原仅占用n个地址,虽然散列查找是以空间换时间,但仍希望散列的地址空间尽量小。二是无论用什么方法存储,目的都是尽量均匀地存放元素,以避免冲突。

散列函数的构造方法有直接定址法、 数字分析法、 平方取中法、 折叠法、 除留余数法、 随机数法。直接定址法 Hash(key) = a*key + b (a、b为常数) 优点是以关键码key的某个线性函数值为散列地址,不会产生冲突。但缺点是要大用连续地址空间,空间效率低。除留余数法 Hash(key)= key mod p(p是一个整数) 设表长为m,取p<=m且为质数。

9.2.1散列表的查找

设n为数据长度,无序表查找ASL =(n+1)/2 ,有序表折半查找ASL =lg2(n+1)-1 ,散列表查找ASL取决于散列函数和处理冲突的方法以及散列表的装填因子a,散列表平均查找长度ASL=各元素查找次数相加/散列表长度a

  • 拉链法ASL~=1&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值