华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 查找表 9.3 哈希(Hash)表和哈希法

数结 华中科技大学 计犷机学院(11) 200=g=
2001 -- 12 --31 华中科技大学 数据结构计算机学院(11)

9.3哈希(Hash)表和哈希法 常用连续存储单元存储数据元素的查找表有两种: (1)顺序表,对数据元素的存储一般有两种形式: (a)是按到来次序连续存放,则查找时使用顺序查找法; (b)二是按关键字的相对关系整理后以递增或递减形式连续 存放,则查找时使用顺序查找法和二分查找法。 (2)哈希表:存储数据元素时,利用一个Hash函数根据数据元素 的关键字计算出该数据元素的存储位置,查找时,也是根据给 定的数据元素的关键字计算出该数据元素可能存储位置,这样 一来,存储和查找的效率相当高, 哈希表也称为散列表,其数据元素的存储一般是不连续的。通 过Hash函数计算出的地址称为哈希地址或散列地址
9.3 哈希(Hash)表和哈希法 常用连续存储单元存储数据元素的查找表有两种: (1)顺序表,对数据元素的存储一般有两种形式: (a) 是按到来次序连续存放,则查找时使用顺序查找法; (b) 二是按关键字的相对关系整理后以递增或递减形式连续 存放,则查找时使用顺序查找法和二分查找法。 (2)哈希表:存储数据元素时,利用一个Hash函数根据数据元素 的关键字计算出该数据元素的存储位置,查找时,也是根据给 定的数据元素的关键字计算出该数据元素可能存储位置,这样 一来,存储和查找的效率相当高, 哈希表也称为散列表,其数据元素的存储一般是不连续的。 通 过Hash函数计算出的地址称为哈希地址或散列地址

9.3.1根据设定的哈希函数H(k)和处理冲突的方法, Hash函数实现的是将一组关键字映象到一个有限的地址区 间上, 理想的情况是不同的关键字得到不同的地址。 设K1和K2为关键字,若K1≠K2,H(K1)=H(K2),则称 K,K2为同义词,K2与K1为发生了冲突 例设H(k)=k%17 k1=5 k2=22 H(5)=5%17=5H(22)=2%17=5 H(5)=H(22)=5 5和22是同义词,5和22发生冲突
9.3.1 根据设定的哈希函数H(k)和处理冲突的方法, Hash函数实现的是将一组关键字映象到一个有限的地址区 间上, 理想的情况是不同的关键字得到不同的地址。 设K1和K2为关键字, 若K1≠K2,H(K1)=H(K2),则称 K1,K2为同义词,K2与K1为发生了冲突 例 设 H(k)=k%17 k1=5 k2=22 ∵ H(5)=5%17=5 H(22)=22%17=5 H(5)=H(22)=5 ∴ 5和22是同义词,5和22发生冲突

例1人口统计表 9.3.2构造哈希函数的方法 序号 (地址)年龄人数(万) 直接定址法 10.5 取关键字或关键字的 212.6 某个线性函数值为哈希地 [31 址 420.8 H(key) =key H(key)=a key+b 150 150 key H(key)=key=地址 H(年龄)=年龄
例1 人口统计表 1 10.5 2 12.6 3 11.0 4 20.8 ... ... 150 ... 序号 (地址) 年 龄 人 数(万) 1 2 3 4 150 H(key)=key = 地址 H(年龄)= 年龄 key 9.3.2 构造哈希函数的方法 1.直接定址法 取关键字或关键字的 某个线性函数值为哈希地 址 H(key)=key H(key)=a.key+b

例2学生成绩表 序号 (地址)学号姓名性别数学外语 [2004刘大海」男」8075 2[20021伟男9083 3|20003吴晓英女8288 420141伟女8090 key H(key)=key-200040=地址 H(学号)=学号-200040
例2 学生成绩表 200041 刘大海 男 80 75 200042 王 伟 男 90 83 200043 吴晓英 女 82 88 200044 王 伟 女 80 90 ...... ..... ... .. .. ...... ..... ... .. .. 1 2 3 4 n key 序号 (地址)学 号 姓 名 性别 数学 外语 H(key) = key - 200040 = 地址 H(学号)= 学号- 200040

例3标识符表 序号标识符(key) 1 ABC H(key)=key的第一个字母在 23456 CAD 字母表中的序号 DAT key =ABC CAD DAT FOX YAb ZOO H(key)=13462526 FOX 25 YAB 26200
例3 标识符表 ABC CAD DAT FOX YAB ZOO 1 2 3 4 5 6 25 26 序号 标识符(key) H(key)=key的第一个字母在 字母表中的序号 key =ABC CAD DAT FOX YAB ZOO H(key)=1 3 4 6 25 26

2.除留余数法 设哈希表HT[0..m1]的表长为m,哈希地址为key 除以p所的的余数: H(key)=key MOD p // PASCAL语言 H(key)=key %p //C语言 其中:MOD,%为“取模”或“求余” p<=m,p为接近m的质数(素数),如: 3,5,7,11,13,17,19,23,29,31,37 或不包含小于20的质因子的合数,如: 713(=23*31)
2.除留余数法 设哈希表HT[0..m-1]的表长为m,哈希地址为key 除以p所的的余数: H(key)=key MOD p //PASCAL语言 H(key)=key % p //C语言 其中:MOD,%为“取模”或“求余” p<=m ,p为接近m的质数(素数), 如: 3,5,7,11,13,17,19,23,29,31,37...... 或不包含小于20的质因子的合数,如: 713(=23*31)

例1设m130,取p=127,H(key)=key%127 012 129 例2设m=256取p=251H(key)=key%251 012 255
例1 设 m=130, 取p=127, H(key)=key % 127 0 1 2 ..... 129 例2 设 m=256 取 p=251 H(key)=key % 251 0 1 2 ..... 255

例设哈希表的地址范围为0~20,哈希函数为H(K)=K%19 输入关键字序列:39,22,21,37,36,38,19,解决冲突的 方法为线性探测再散列(哈希),构造哈希表HT[0.20]。 HT[0..20] 关键字KH(K)=K%19 38 3939‰19=1 39 2222%19=3 21 2121‰19=2 22 3737%19=18 345 19 3636‰19=17 3838%19=0 1919%19=0 17 36 19与38冲突,再与39,21 18 37 22冲突,存入HT[4] 19 20
例 设哈希表的地址范围为0~20,哈希函数为H(K)=K % 19 输入关键字序列:39,22,21,37,36,38,19,解决冲突的 方法为线性探测再散列(哈希),构造哈希表HT[0..20]。 38 39 21 22 19 36 37 关键字K H(K)=K%19 39 39%19=1 22 22%19=3 21 21%19=2 37 37%19=18 36 36%19=17 38 38%19=0 19 19%19=0 19与38冲突,再与39,21, 22冲突,存入HT[4] 0 1 2 3 4 5 17 18 19 20 HT[0..20] key

再输入17,56,55 HT[0..20] 17%19=17 38 17与36冲突,再与37冲突,存入 39 HT[19]。 21 56‰19=18 22 56与37冲突,再与17冲突,存入 19 HT[20]。 55 55%19=17 17 55与36冲突,再与37,17,56冲突 36 37 与38,39,21,22,19冲突,存入[5。1917 20 56 对于H(k)=k%19,所有的19a+b为 key 同义词,0≤b≤19 如:5,24,43,62,81
38 39 21 22 19 55 36 37 17 56 再输入17,56,55 17%19=17 17与36冲突,再与37冲突,存入 HT[19]。 56%19=18 56与37冲突,再与17冲突,存入 HT[20]。 55%19=17 55与36冲突,再与37,17,56冲突,再 与38,39,21,22,19冲突,存入HT[5]。 对于H(k)=k % 19,所有的19a+b为 同义词,0≤b≤19 如:5,24,43,62,81,..... 0 1 2 3 4 5 17 18 19 20 HT[0..20] key
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 查找表 9.0 有关的术语 9.1 静态查找表 9.2 动态查找表.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图 Graph 7.5 有向无环图及其应用 7.6 最短路径.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图 Graph 7.3 图的遍历 7.4 图的连通性问题.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图 Graph 7.1 图的定义和术语 7.2 图的存储结构.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树和二叉树 6.3 遍历二叉树和线索二叉树.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树和二叉树 6.1 树的定义 6.2 二叉树(binary tree)6.3 遍历二叉树和线索二叉树.ppt
- 华中科技大学:《C语言程序设计》第十二章 文件.ppt
- 华中科技大学:《C语言程序设计》第十章(10-4) 归并排序.ppt
- 华中科技大学:《C语言程序设计》第十章 内排序.ppt
- 华中科技大学:《C语言程序设计》大型作业.ppt
- 华中科技大学:《C语言程序设计》作业解答-树.ppt
- 华中科技大学:《C语言程序设计》作业解答-图.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)作业解答5.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)作业解答4.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)作业解答3.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 数组和广义表.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第四章 字符串/串(string).ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第三章 栈和队列 3.4 队列(排队,queue).ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第三章 栈和队列 3.1 栈(stack)3.2 栈的应用举例.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 线性表(2/2)2.3 线性表的链式存储结构.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第一章 计算机的运算基础与微型机.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》ftp地址.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第二章 汇编语言和汇编程序.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第三章 程序设计的基本技术.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第三章 软件设计基础.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第二章 汇编语言和汇编程序.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第六章 输入/输出接口.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第三章 程序设计的基本技术.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第四章 8088的总线与时序.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第五章 半导体存储器.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第一章 计算机的运算基础与微型机的基本结构.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第一章 软件设计基础.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》微机实验硬件报告要求.doc
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》前言.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第二章 软件设计技术.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》第一章 计算机的运算基础与微型机.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》微机试验软件部分试验报告.doc
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》硬件上机验收内容.ppt
- 华中科技大学电子与信息工程系:《微型计算机原理及应用》微机实验硬件报告要求.doc
- 《AutoCAD中文版辅肋设计教程》第10课 尺寸标注.ppt