【数据结构】——查找、散列表的相关习题

目录

  • 一、选择填空判断题
    • 题型一(顺序、二分查找的概念)
    • 题型二(分块查找的概念)
    • 题型三(关键字比较次数)
  • 二、应用题
    • 题型一(二分查找判定树)

一、选择填空判断题

题型一(顺序、二分查找的概念)

1、顺序查找适用于存储结构为()的线性表。
A、顺序存储结构或者链式存储结构
B、散列存储结构
C、索引存储结构
D、压缩存储结构

解析:(A)
顺序查找属于线性查找,从线性表的一端开始,依次检查所给定的关键字是否满足条件,若找到符合条件的元素,则查找成功;否则,查找失败。

由于线性表有顺序存储和链式存储两种存储方式,顺序查找对这两种存储方式都适用,若对于顺序表,则通过数组的下标依次查找;对于链表,则通过指针依次查找,在链表中只能进行顺序查找。

2、使用二分查找方法时,对线性表的存储结构及特性的要求是()。
A、元素的链表
B、有序的链表
C、无序的顺序表
D、有序的顺序表

解析:(D)
二分查找(折半查找)属于线性查找,每次取中间元素进行比较,一直缩小范围继续进行查找,直到查找到相关元素为止,找到即查找成功;否则,查找失败。

二分查找只适用于有序的顺序表,它要求线性表具有随机存取,前提是查找表中必须是按关键字大小有序排列。

3、在一个顺序存储的有序线性表上查找一个数据时,既可以采用折半查找,也可以采用顺序查找,但前者比后者的查找速度()。
A、必然快
B、取决于表是递增还是递减
C、在大部分情况下要块
D、必然不快

解析:(C)
顺序查找的优点是对元素的存储没有要求,可以顺序存储和链式存储,且对表内的有序性也没有要求,但其缺点是当n较大时,ASL较大,导致效率低。在平均情况下,折半查找比顺序查找的效率高。

题型二(分块查找的概念)

1、(填空)长度为7225的有序表,采用分块查找进行查找,为了提高顺序查找索引表和顺序查找相应块的效率,则应将有序表分成_________块,每块长度为_________,此时平均查找长度是_________。

解析:85、85、86
分块查找的平均查找长度等于索引查找和块内查找的平均查找长度之和,即ASL=ASL索引表+ASL子表。若查找表长度为n,被均匀地分为b块,且每块有s个记录,则在等概率的情况下,若对块内和索引表内都采用顺序查找的平均查找长度为:ASL=ASL索引表+ASL子表=(b+1)/2+(s+1)/2=(s2+2s+n)/2s,且每块有记录为s= √n。

所以被分为85块,每块的最佳长度应该为√7225=85最合适,为每个块建立索引,索引表中索引项的个数为85,即每块长度为85,从85个块中进行顺序查找,即(b+1)/2=(85+1)/2=43;在每个块中进行顺序查找,即(s+1)/2=(85+1)/2=43,故平均查找长度为43+43=86。

题型三(关键字比较次数)

1、已知有序表(13,18,24,35,47,50,62,83,90,115,134),当二分查找值为90的元素时,查找成功的比较次数为()。
A、1
B、2
C、4
D、6

解析:(B)
low指针一开始指向13,high指针一开始指向134,所以mid指向50,第一次比较90>15,所以low+1,high指针不变,此时low指针指向62,high指针指向134,即mid指向90,即第二次比较时找到目标元素,查找成功的比较次数为2。

2、已知一个长度为16的顺序表L,其元素按关键字有序排列,若采用折半查找法查找一个L中不存在的元素,则关键字的比较次数最多为()。
A、4
B、5
C、6
D、7

解析:(B)
对于顺序查找,查找成功或不成功,关键字的比较次数始终是n+1次,当定位至第i个元素时,关键字的比较次数为n-i+1。(默认代码中采用监视哨,若不采用监视哨,关键字的比较次数为n)

对于折半查找,查找成功和查找失败的最多比较次数相同,均为⌈log2(n+1)⌉,由于折半判定树不是一棵满二叉树,其各分支高度相差为0或1,且由于最多相差为1,所以查找失败的最少次数为⌈log2(n+1)⌉-1。故题中关键字的比较次数最多为⌈log2(n+1)⌉=⌈log2(16+1)⌉=⌈log2(17)⌉= 4.087…,取大于等于该值的最小整数(向上取整),即5。

3、为提高查找效率,对有65025个元素的有序顺序表建立索引顺序结构,在最好情况下查找列表中已有元素最多需要执行()次关键字比较。
A、10
B、14
C、16
D、21

解析:(C)
每个索引块的大小为 √65025=255,为每个块建立索引,索引表中索引项的个数为255,当对索引表和块内都采用折半查找时,查找效率最高,即ASL=ASL索引表+ASL子表=⌈log2(b+1)⌉+⌈log2(b+1)⌉=2⌈log2(b+1)⌉=2×8=16。

二、应用题

题型一(二分查找判定树)

1、若一个有序顺序表表长为12:
(1)画出对其进行二分查找的二分查找判定树;
(2)在等概率假定条件下,计算对该表进行二分查找时查找成功和查找失败的平均查找长度。

解析:(1)二分查找判定树的求法:
①确定根结点:取low=1,high=12,mid向下取整(小于等于这个数的最大整数),即mid=⌊(low+high)/2 ⌋=⌊6.5⌋=6,即元素6为判定树的根结点,如下:
在这里插入图片描述
在这里插入图片描述
②从mid的左右子表开始进行查找。
mid左子表查找

  • 左子树】此时low=1不变,high变为mid-1,mid=6,即high=mid-1=6-1=5,改变后的mid=⌊(low+high)/2⌋=⌊6/2⌋=⌊3⌋=3,所以根结点6的左子树为3,如下:
    在这里插入图片描述
    在这里插入图片描述
  • 继续探索左子树,low=1不变,high变为mid-1,mid=3,即high=mid-1=3-1=2,改变后的mid=⌊(low+high)/2 ⌋=⌊3/2⌋=⌊1.5⌋=1,所以结点3的左子树为1,如下:
    在这里插入图片描述
    在这里插入图片描述
  • 若继续探索左子树,易知结点1无左子树。
  • 从结点1开始探索右子树,high=2不变,low为mid+1,mid=1,即low=mid+1=1+1=2,改变后的mid=⌊(low+high)/2 ⌋=⌊4/2⌋=⌊2⌋=2,所以结点1的右子树为2,如下:
    在这里插入图片描述
    在这里插入图片描述
  • 右子树】此时从结点3开始探索右子树,high=5不变,low为mid+1,mid=3,即low=mid+1=3+1=4,改变后的mid=⌊(low+high)/2 ⌋=⌊9/2⌋=⌊4.5⌋=4,所以结点3的右子树为4,如下:
    在这里插入图片描述
    在这里插入图片描述
  • 若继续探索左子树,易知结点4无左子树。
  • 此时从结点4开始探索右子树,high=5不变,low为mid+1,mid=4,即low=mid+1=4+1=5,改变后的mid=⌊(low+high)/2 ⌋=⌊10/2⌋=⌊5⌋=5,所以结点4的右子树为5,如下:
    在这里插入图片描述
    在这里插入图片描述
    mid右子表查找
  • 此时high=12不变,low为mid+1,mid=6,即low=mid+1=6+1=7,改变后的mid=⌊(low+high)/2 ⌋=⌊19/2⌋=⌊9.5⌋=9,如下:在这里插入图片描述
    在这里插入图片描述
  • 此时从结点9开始探索左子树,low=5不变,high为mid+1,mid=9,即high=mid+1=9+1=10,改变后的mid=⌊(low+high)/2 ⌋=⌊15/2⌋=⌊7.5⌋=7,如下:
    在这里插入图片描述
    在这里插入图片描述
    ……
    最后可以得到如下:
    在这里插入图片描述

(2)查找成功:ASL=(1×1+2×2+4×3+5×4)/12=37/12。
查找失败:判定树中,将其补全,第四行失败的叶结点有3个,第五行失败的叶结点有10个,如下:
在这里插入图片描述
ASL=(3×3+4×10)/13=49/13。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/98584.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode328 奇偶链表

思路:分别处理奇偶,保存奇偶的第一个和最后一个节点,注意最后链接的时候需要把偶数的next去掉再拼接不然就成环了 class Solution:def oddEvenList(self, head: ListNode) -> ListNode:if not head or not head.next or not head.next.ne…

YOLOv5算法改进(10)— 替换主干网络之GhostNet

前言:Hello大家好,我是小哥谈。GhostNet是一种针对计算机视觉任务的深度神经网络架构,它于2020年由中国科学院大学的研究人员提出。GhostNet的设计目标是在保持高精度的同时,减少模型的计算和存储成本。GhostNet通过引入Ghost模块…

阿里云架构

负载均衡slb 分类以及应用场景 负载均衡slb clb 传统的负载均衡(原slb) 支持4层和7层(仅支持对uri(location),域名进行转发) 一般使用slb(clb) alb 应用负载均衡 只支持7层,整合了nginx负载均衡的各种功能,可以根据用户请求头,响应头 如果需要详细处理用户请求(浏…

【Dart】学习使用(二):基本类型

前言 基本类型是语言的基础。 Dart 语言支持以下基础类型:Numbers(int、double), 整形Strings(String), 字符串Booleans(bool) , 布尔型Records((value1,value2)) 记录Lists(List ) 数组Sets(Set) 集合Maps(Map) 映射Runes(Runes,通常由 characters AP…

springBoot--终

目录 Web定制SpringMVC定制某些mvc配置定制mvc核心组件完全自定义mvc 静态资源静态资源映射静态资源缓存示例自定义静态资源规则配置方式代码方式 欢迎页Favicon(网站图标)路径匹配策略内容协商制定返回json类型数据制定返回xml类型数据制定返回自定义类…

2023年高教社杯 国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…

本地部署体验LISA模型(LISA≈图像分割基础模型SAM+多模态大语言模型LLaVA)

GitHub地址:https://github.com/dvlab-research/LISA 该项目论文paper reading:https://blog.csdn.net/Transfattyacids/article/details/132254770 在GitHub上下载源文件,进入下载的文件夹,打开该地址下的命令控制台,…

Vue安装过程的困惑解答——nodejs和vue关系、vue的项目结构

文章目录 一、为什么在使用vue前要下载nodejs?二、为什么安装nodejs后就能使用NPM包管理工具?三、为什么是V8引擎并且使用C实现?四、为什么会安装淘宝镜像?五、什么是webpack模板,为什么需要他?六、vue项目…

深入探索C语言自定义类型:打造你的编程世界

一、什么是自定义类型 C语言提供了丰富的内置类型,常见的有int, char, float, double, 以及各种指针。 除此之外,我们还能自己创建一些类型,这些类型称为自定义类型,如数组,结构体,枚举类型和联合体类型。 …

Unreal5(虚幻5)学习记录 快捷键

虚幻5学习记录 快捷键 世界场景中漫游(镜头移动): 按住鼠标右键 键盘的W(前) S(后) A(左) D(右) E(上) Q(下)键 透视 透视 ALTG 上部分 ALTJ 底视图ALTSHIFTJ 左视图 ALTK 右视图 ALTSHIFTK 前视图 ALTH 后视图 ALTSHIFTH 内容浏览器 Ctrl Space 内容浏览器…

stm32CubeMX HAL W5500芯片介绍 第一章

W5500芯片介绍 文章目录 W5500芯片介绍简单简绍以太网以太网分五层:第一层物理层:第二层:数据链路层:第三层:网络层:第四层:传输层:第五层:应用层:以太网应用…

Scala的特质trait与java的interface接口的区别,以及Scala特质的自身类型和依赖注入

1. Scala的特质trait与java接口的区别 Scala中的特质(trait)和Java中的接口(interface)在概念和使用上有一些区别: 默认实现:在Java中,接口只能定义方法的签名,而没有默认实现。而在…

Matlab(结构化程式和自定义函数)

目录 1.脚本编辑器 2.脚本流 2.1 控制流 2.2 关系(逻辑)操作符 3.脚本与函数 1.脚本编辑器 Matlab的命名规则: 常用功能: 智能缩进: 在写代码的时候,有的时候代码看起来并不是那么美观(可读性…

单片机通用学习-​什么是寄存器?​

什么是寄存器? 寄存器是一种特殊的存储器,主要用于存储和检查微机的状态。CPU寄存器用于存储和检查CPU的状态,具体包括计算中途数据、程序因中断或子程序分支时的返回地址、计算结果为零时的负值、计算结果为零时的信息、进位值等。 由于CP…

怎么提取视频中的音乐保存到本地?其实方法很简单

当你想要使用视频中的音乐时,你可以考虑将它从视频中提取出来。这可以用于制作音频样本集,制作铃声或其他音频素材,或者向其他人展示视频的音乐部分而无需显示视频本身。如果你是一位音乐制作人员,你可能会需要一些特定类型的音效…

HTML之VSCode简单配置与创建

目录 插件下载 然后输入源码&#xff1a; 使用 效果 插件下载 下载这个插件后可以直接运行&#xff1a; 然后创建一个文件&#xff1a; 然后输入源码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…

Vue3列表竖向滚动(包含使用swiper的翻页效果)

一、使用element-plus表格进行滚动&#xff1a; 可以满足的需求&#xff1a;表格一行一行竖向滚动&#xff0c;类似走马灯。 不能满足的需求&#xff1a;表格分页竖向滚动&#xff0c;有翻页的效果。 代码&#xff1a; <template><el-table:data"tableData"…

AMEYA360:兆易创新获得ISO 26262 ASIL D流程认证, 汽车功能安全管理体系再上新台阶

中国北京(2023年8月29日) —— 业界半导体器件供应商兆易创新GigaDevice(股票代码 603986)今日宣布&#xff0c;获得由国际公认的测试、检验和认证机构通标标准技术服务有限公司(以下简称SGS)授予的ISO 26262:2018汽车功能安全最高等级ASIL D流程认证证书&#xff0c;这标志着兆…

文心一言 VS CHATGPT

由于近几天来&#xff0c;我的手机短信不断收到百度公司对于“文心一言”大模型的体验邀请&#xff08;真是不胜其烦&#xff09;&#xff01;&#xff01;所以我就抱着试试看的态度点开了文心一言的链接&#xff1a;文心一言 目前看来&#xff0c;有以下两点与chatgpt是有比较…

【自学开发之旅】基于Flask的web开发(一)

web开发项目设计&#xff1a; 立项-需求分析-设计&#xff08;原型图、数据库、api设计&#xff09;-技术选型-写代码-测试-上线 web开发的本质上就是生成超文本。 前端负责展示&#xff0c;后端负责逻辑处理&#xff1a;后逻辑请求&#xff08;接收请求、响应请求&#xff0…
最新文章