当前位置: 首页 > news >正文

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

目录

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

一、选择填空判断题

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

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。

相关文章:

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

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

提升Java开发效率:掌握HashMap的常见方法与基本原理

文章目录 前言一、概述1. 认识HashMap2. HashMap 的作用和重要性3. 简要讲解 HashMap 的基本原理和实现方式 二、了解 HashMap 创建及其的常见操作方法1. HashMap的创建2. 添加元素 put()3. 访问元素 get()4. 删除元素 remove()5. 计算大小 size()6. 迭代 HashMap for-each7.判…...

PostgreSQL系统概述

目录 写在前面 1.简介 1.1何为关系型数据库 1.2何为对象型数据库 2.特性 3.代码结构 3.1数据库集簇 3.2Parser查询分析流程 3.3内部查询树组成部分 3.3.1目标列表 3.4Optimizer查询优化流程 3.4.1查询计划 3.5非计划查询的SQL命令 写在前面 如有错误请指正&#xf…...

掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「中篇」

文章目录 掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「中篇」一、指南原则1: 使用明确和具体的指令原则2: 给模型思考的时间 二、迭代三、总结与提取四、局限与改善五、总结 掌握AI助手的魔法工具:解密Prompt&#x…...

git svn:使用 git 命令来管理 svn 仓库

git-svn 使用教程 参考以下: https://cloud.tencent.com/developer/article/1415892 # 在SVN仓库上使用Git 源 https://blog.csdn.net/jiejie11080/article/details/106917116 # git svn clone速度慢的解决办法 http://blog.chinaunix.net/uid-11639156-id-30774…...

软考高级系统架构设计师系列论文九十一:论分布式数据库的设计与实现

软考高级系统架构设计师系列论文九十一:论分布式数据库的设计与实现 一、分布式数据库相关知识点二、摘要三、正文四、总结一、分布式数据库相关知识点 软考高级系统架构设计师系列之:分布式存储技术...

GeoHash之存储篇

前言: 在上一篇文章GeoHash——滴滴打车如何找出方圆一千米内的乘客主要介绍了GeoHash的应用是如何的,本篇文章我想要带大家探索一下使用什么样的数据结构去存储这些Base32编码的经纬度能够节省内存并且提高查询的效率。 前缀树、跳表介绍: …...

后端项目开发:集成接口文档(swagger-ui)

swagger集成文档具有功能丰富、及时更新、整合简单&#xff0c;内嵌于应用的特点。 由于后台管理和前台接口均需要接口文档&#xff0c;所以在工具包构建BaseSwaggerConfig基类。 1.引入依赖 <dependency><groupId>io.springfox</groupId><artifactId>…...

代码随想录训练营29天|●* 491.递增子序列 * 46.全排列 * 47.全排列 II

class Solution {vector<vector<int>>res;vector<int>vec;void backing(vector<int>& nums,int index){if(vec.size()>2&&is(vec)){res.push_back(vec);}unordered_set<int> uset; // 使用set对本层元素进行去重for(int iindex;i…...

uniapp日期选择组件优化

<uni-forms-item label="出生年月" name="birthDate"><view style="display: flex;flex-direction: row;align-items: center;height: 100%;"><view class="" v-...

AI驱动的大数据创新:探索软件开发中的机会和挑战

文章目录 机会数据驱动的决策自动化和效率提升智能预测和优化个性化体验 挑战数据隐私与安全技术复杂性数据质量和清洗伦理和社会问题 案例&#xff1a;智能代码生成工具总结 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &…...

国产化-银河麒麟V10系统及docker的安装

一、最近在研究国产化操作系统&#xff0c;“银河麒麟V10”&#xff0c; 在我电脑本机vmware 15的虚拟机中进行安装测试&#xff1b; 1.点击这里提交产品试用申请&#xff0c;不过只需要随便输入&#xff0c;手机号验证码验证后方可跳转至下载地址产品试用申请国产操作系统、银…...

计算机毕设 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目&#xff0c;二维码 / 条形码检测与识别 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 1 二维码检测 物体检…...

Redis原理剖析

一、Redis简介 Redis是一个开源的&#xff0c;基于网络的&#xff0c;高性能的key-value数据库&#xff0c;弥补了memcached这类key-value存储的不足&#xff0c;在部分场合可以对关系数据库起到很好的补充作用&#xff0c;满足实时的高并发需求。 Redis跟memcached类似&#…...

【送书活动】AI时代,程序员需要焦虑吗?

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

什么是 JSON:理解和运用 JSON 的基本概念

现在程序员还有谁不知道 JSON 吗&#xff1f;无论对于前端还是后端&#xff0c;JSON 都是一种常见的数据格式。那么 JSON 到底是什么呢&#xff1f; JSON 的定义 JSON &#xff08;JavaScript Object Notation&#xff09; &#xff0c;是一种轻量级的数据交换格式。它的使用…...

CSDN每日一练 |『异或和』『生命进化书』『熊孩子拜访』2023-08-27

CSDN每日一练 |『异或和』『生命进化书』『熊孩子拜访』2023-08-27 一、题目名称&#xff1a;异或和二、题目名称&#xff1a;生命进化书三、题目名称&#xff1a;熊孩子拜访 一、题目名称&#xff1a;异或和 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&…...

整数拆分乘积最大

将一个整数拆分为若干个自然数的和&#xff0c;如果要使这些数的乘积最大&#xff0c;应该尽可能的拆分出3。 任意一个数字可以由多个3的n次方的和&#xff08;差&#xff09;表示。 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class M…...

浅谈 Linux 下 vim 的使用

Vim 是从 vi 发展出来的一个文本编辑器&#xff0c;其代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用。 Vi 是老式的字处理器&#xff0c;功能虽然已经很齐全了&#xff0c;但还有可以进步的地方。Vim 可以说是程序开发者的一项很好用的工…...

leetcode:只出现一次的数字Ⅲ(详解)

题目&#xff1a; 给你一个整数数组 nums&#xff0c;其中恰好有两个元素只出现一次&#xff0c;其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。 示例 1&…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...