散列查找(重点讲解查找失败的ASL) 习题集
更新日期:2021年10月10日
写在前边的话:你的支持是我写作的动力,有帮助到你的话麻烦点赞加收藏呦。感激不尽!如有错误也请留言指正。
考研数据结构练习,欢迎订阅我的专辑《考研数据结构题型分类讲解练习》
目录
一、 线性探测
接下来重点讲解查找失败的ASL
二、二次探测再散列
三、线性探测再散列
一、 线性探测
本文以例题形式讲解散列查找中,散列表的构建,以及查找成功的ASL和失败的ASL。重点讲解求解失败的ASL的过程,巨详细(后边还有其他例题)
【2010年全国试题41(10分)】将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组,散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。
(1) 请画出所构造的散列表。
(2) 分别计算等概率情况下查找成功和查找不成功的平均查找长度。
key | 7 | 8 | 30 | 11 | 18 | 9 | 14 |
---|---|---|---|---|---|---|---|
H(key) | 0 | 3 | 6 | 5 | 5 | 6 | 0 |
实际散列位置 | 0 | 3 | 6 | 5 | 7 | 8 | 1 |
查找成功需要探测次数 | 1 | 1 | 1 | 1 | 3 | 3 | 2 |
(1)装填因子, 所以 n = 10
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
7 | 14 | 8 | 11 | 30 | 18 | 9 |
(2)根据表1-1中 查找查找成功需要探测次数,
接下来重点讲解查找失败的ASL
求解查找失败的ASL需要计算出每个散列位置(即每个模对应的值)查找失败所需要的的次数,本题散列函数模的是7,所以只需要计算模为0,1,2,3,4,5,6的关键字查找失败所需要的次数。查找到空说明查找失败,查找示意图如下
- 查找模为0的关键字,失败时比较的次数为3
- 查找模为1的关键字,失败时比较次数为2
- 查找模为2的关键字,失败时比较次数为1
- 查找模为3的关键字,失败时比较次数为2
- 查找模为4的关键字,失败时比较次数为1
- 查找模为5的关键字,失败时比较次数为5
- 查找模为6的关键字,失败时比较次数为4
将上述过程整理成表格如下
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
7 | 17 | 8 | 11 | 30 | 18 | 9 | ||||
各个模查找失败需要比较的次数 | 3 | 2 | 1 | 2 | 1 | 5 |
查找失败的平均比较次数为:
二、二次探测再散列
2.【东北大学2002 二、2 (5分)】设有一组关键字(9, 01,23, 14, 55, 20, 84,27),采用哈希函数: H(key)=key mod 7,表长为10,用开放地址法的二次探测再散列方法
解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。
9 | 01 | 23 | 14 | 55 | 20 | 84 | 27 | |
H(key)=key mod 7 | 2 | 1 | 2 | 0 |
6 |
6 | 0 | 6 |
第一次冲突+1 | 3 | 7 | 1 | 7 | ||||
第二次冲突+4 | 4 | 0 | ||||||
第三次冲突+9 | 5 | |||||||
实际位置 | 2 | 1 | 3 | 0 | 6 | 7 | 4 | 5 |
查找需要次数 | 1 | 1 | 2 | 1 | 1 | 2 | 3 | 4 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
14 | 1 | 9 | 23 | 84 | 27 | 55 | 20 |
查找成功所需的
3.设散列表的表长m=15,散列函数H(key)=key mod 13,关键码集合为(53, 17,12, 61, 89, 70, 87, 25, 64, 46),采用二次探测法处理冲突,试构造闭散列表,并计算查找成功的平均查找长度。
key | 53 | 17 | 12 | 61 | 89 | 70 | 87 | 25 | 64 | 46 |
---|---|---|---|---|---|---|---|---|---|---|
H(key) | 1 | 4 | 12 | 9 | 11 | 5 | 9 | 12 | 12 | 7 |
第一次冲突应散列的位置 +1 | 10 | 13 | 13 | |||||||
第二次冲突应散列的位置 -1 | 11 | |||||||||
第三次冲突应散列的位置 +4 | 1 | |||||||||
第四次冲突应散列的位置 -4 | 8 | |||||||||
实际散列位置 | 1 | 4 | 12 | 9 | 11 | 5 | 10 | 13 | 8 | 7 |
查找成功比较次数 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 5 | 1 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
53 | 17 | 70 | 46 | 64 | 61 | 87 | 89 | 12 | 25 |
查找成功的
三、线性探测再散列
4【东北大学2001六(18分)】对下面的关键字集(30, 15, 21, 40, 25,26, 36, 37),若查找表的装填因子为0.8,采用线性探测再散列方法解决冲突。
(1)设计哈希函数;
(2)画出哈希表;
(3)计算查找成功和查找失败的平均查找长度;
(1) Hey(key) = key % 7;
(2)
key | 30 | 15 | 21 | 40 | 25 | 26 | 36 | 37 |
---|---|---|---|---|---|---|---|---|
Hey(key) | 2 | 1 | 0 | 5 | 4 | 5 | 1 | 2 |
实际散列位置 | 2 | 1 | 0 | 5 | 4 | 6 | 3 | 7 |
查找成功所需次数 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | 6 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
21 | 15 | 30 | 36 | 25 | 40 | 26 | 37 |
(3)查找成功的平均查找长度
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
21 | 15 | 30 | 36 | 25 | 40 | 26 | 37 | |||
查找失败需要比较的次数 | 9 | 8 | 7 | 6 | 5 | 4 | 3 |
查找失败的平均查找长度
3【北京工业大学2000三(8分)1 【烟台大学2007四、4 (10分)】采用哈希函数H(k)-3*k mod 13并用线性探测开放地址法处理冲突,在散列地址空间[0..12]中对关键字序列22, 41, 53, 46, 30, 13, 1, 67,51。
(1)构造哈希表(画示意图);
(2)装填因子;
等概率下(3)成功的和(4)不成功的平均查找长度。
散列查找(重点讲解查找失败的ASL) 习题集相关推荐
- Hash(散列)建表及查找
散列方法 不用比较就能直接计算出记录的存储地址,从而找到所要的结点 Hash表 1).定义 根据设定的散列函数和相应解决冲突的方法为一组结点建立的一张表,表中的结点的存储位置依赖于设定的散列函数和处理 ...
- 数据结构和算法分析: 第五章 散列
散列表的实现常常叫做散列.散列是一种用于以常数平均时间执行插入.删除和查找的技术. 5.1 一般想法 散列表的数据结构是一个包括一些项(item)的具有固定大小的数组.通常查找是对于项的某个部分(即数 ...
- 查找 - 计算式查找法 - 哈希法
1.哈希函数的构造方法 > 数字分析法 假设关键字 Key 为 8 位十进制整数: ① 确定哈希表的长度,示例:100,即地址空间为 0 ~ 99 ② 确定 "取值比较均匀分布&quo ...
- C++(数据结构与算法):30---散列(哈希)表的介绍(散列函数、散列冲突、散列溢出)
一.散列(哈希)介绍 散列使用一个散列函数(也称为哈希函数)把字典的数对映射到一个散列表(也称为哈希表)的具体位置 散列的存储与查找: 查找:如果数对p的关键字是k,散列函数为f,那么在理想的情况下, ...
- 数据结构37:什么是散列
目录 一.散列:Hashing 二.散列表:基本概念 三.散列:示例 一.散列:Hashing 前面我们利用数据集中关于数据项之间排列关系的知识,来将查找算法进行了提升. 如果数据项之间是按大小排好序 ...
- 【ADT】第五章 散列
散列表ADT是一个包含一些项的具有固定大小的数组 散列是一种以常数平均时间O(1)执行插入.删除.查找的技术 JavaCollection中基于散列技术实现了HashSet.HashMap 不支持排序 ...
- 散列、散列函数、散列算法分析
目录 背景 散列:Hashing 散列表 Hash table 完美散列函数 应用 例子 散列函数的最酷应用--区块链 含义 本质特征 散列函数的设计 折叠法 平方取中法 非数项处理 散列冲突解决方案 ...
- 哈希表(散列查找)(c/c++)
通过哈希表进行查找的特点是:不需要比较关键字,而是通过哈希函数计算出关键字的位置.一般来讲,为了进行高效率的查找,要求哈希函数简单均匀.空间利用率高.关键字之间的冲突少. 关于散列查找的实现需要着重考 ...
- 散列查找 散列表(哈希表)
哈希表的平均查找长度是()的函数. A.哈希表的长度 B.哈希表的装填因子 C.哈希函数 D.表中元素的多少 装填因子 = 关键字个数 / 表长 符号表:是 "名字(Name)–属性(Att ...
最新文章
- php 字符 hash_php常用hash加密函数
- 「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
- translucent 属性
- 零基础不建议学前端_临夏零基础怎么学理发
- 360笔试题-字符置换
- Linux 设置PS1变量颜色
- php支付宝 缺少签名参数,【支付宝】退款接口 报 “缺少签名参数”
- lua 利用os.data和os.time实现运营活动在客户端跨时区换算服务端所在时区时间戳
- 计算机之父,你知道是谁吗?
- 【博客431】接入层 汇聚层 核心层
- GoLang之Map深度讲解
- Python 爬虫 批量下载论坛图片
- 67.输入若干行文本,每行以回车结束,以 ctrl+z 作为结束符,统计其行数
- 【洛谷 P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐】【容斥原理+生成函数】
- Pytorch 语义分割DeepLabV3+ 训练自己的数据集
- c5绑定steam显示服务器内部错误,C5GAME实现Steam非正常交易自动拦截,轻松规避诈骗...
- Could not download lifecycle-service.aar (androidx.lifecycle:lifecycle-service:2.0.0)
- i++ 、 ++i和i+=1、i=i+1 的问题
- 海康威视摄像机OSD设置、字符叠加(时间,通道名称)
- 数据价值如何在企业实战中落地(33PPT)
热门文章
- 2019研究生数学建模C题--图片像素获取与视频帧处理
- mysql极限_SQL极限函数limit()详解分页必备
- Latex排版(图片)
- 重磅!复宏汉霖首款产品汉利康®获批,成中国生物类似药里程碑...
- 最新封神总结!蚂蚁金服 + 滴滴 + 美团 + 拼多多 + 腾讯 55 万字 Java 中高级面试题,这还不拿捏大厂面试?拿高薪!!
- 利用计算机网络盗窃,利用计算机病毒盗窃网络虚拟财产行为定性分析
- Python学习:字典(dictionary)
- 三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程+本地通讯程序
- 森林水文学类毕业论文文献都有哪些?
- 技术科普丨平台效果调试篇5-Green zone