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

7.1.查找的基本概念


一.查找的基本概念:

1.查找:找到所需的数据;

2.查找表:用来存储数据的数据结构;

3.查找表可以是线性结构、树形结构、图结构(网状结构),因此查找表由数据元素构成;

4.查找表并不是特定的数据结构,它只是对于要执行查找操作的这个数据结构的统称,所以查找表并不是新的数据结构;

5.关键字:用来唯一区分各个数据元素的数据项->

  • 例一:如上图,给出了一张表,表的内容是成绩信息,每个同学会有一个学号,这个学号都是不重复的,所以可以把学号这个数据项作为区分各个数据元素的关键字,姓名无法作为关键字,因为姓名可能重复,比如上述表中的"铁柱"

  • 例二:如上图,一个图结构,这是由微信的用户信息组成的一个图结构,当查询这个图结构时,这个图结构就是当前的查找表,每一个用户信息就是这个查找表当中的数据元素,这个场景当中可以把每个用户的微信号作为关键字,因为微信号是唯一的,但是微信昵称可能重复,因此微信昵称不能作为关键字,比如上述图片中的"铁柱"


二.对查找表的常见操作:

查找表常见的有两类操作:

第一类操作是"查找",不会涉及到对数据元素的修改;

第二类操作是"插入、删除",会导致查找表中的数据元素发生改变。

查找表名称概念数据元素特点实例效率
静态查找表如果一个查找表只需要进行第一类操作即"查找"数据元素,那么这类查找表就是静态查找表静态查找表中的数据元素是静态的,不会发生改变比如记录成绩的查找表,因为成绩一旦确定是不会改变的设计静态查找表的查找算法时,只需要关注查找数据元素的效率即可,因为只进行"查找"操作
动态查找表如果一个查找表中不仅要进行第一类操作即"查找"数据元素外,还需要进行第二类操作即"插入/删除"数据元素,那么这类查找表就是动态查找表动态查找表中的数据元素是动态的,会发生改变比如一个商家的点餐订单系统,因为各个订单的数据信息会新增/删除/查找设计动态查找表的查找算法时,除了要考虑查找数据元素的效率之外,还需要考虑插入/删除数据元素的效率
  • 在实际应用当中,需要考虑到当前的场景是否需要增加/删除数据元素,如果需要,就使用动态查找表,如果不需要,就使用静态查找表,不同的查找表的存储结构(物理结构)与数据结构是不同的,用不同的数据结构来存储数据相应的会影响到算法的实现与效率


三.查找算法的评价指标:

1.概念:

  • 查找算法的评价指标关键看算法的平均查找长度ASL:要把各种情况都考虑进去,然后考虑到每种情况发生的概率

  • 题目没特别说明的情况下,默认是查找任何一个元素的概率都是等可能的

2.实例:

比如求二叉排序树的ASL,以上述图片左边的树为例,在全部能查找成功的情况下,

如果要查找50,那么从根结点出发,需要对比一次关键字即可找到50,树的第一层共有1个结点,所以第1项是1 * 1,

如果要查找26,那么从根结点出发,需要对比两次关键字即可找到26,树的第二层共有2个结点,所以第2项是2 * 2,

如果要查找21,那么从根结点出发,需要对比三次关键字即可找到21,树的第三层共有4个结点,所以第3项是3 * 4,

如果要查找68,那么从根结点出发,需要对比四次关键字即可找到68,树的第四层共有1个结点,所以第4项是4 * 1,

所以该二叉排序树的ASL=( 1 * 1 + 2 * 2 + 3 * 4 + 4 * 1 ) * 1/8=2.625,

最后乘以1/8指的是总共有8个数据元素,这8个数据元素被查找的概率都是1/8。

->本例中ASL=( 1 * 1 + 2 * 2 + 3 * 4 + 4 * 1 ) * 1/8=1 * 1 * 1/8 + 2 * 2 * 1/8 + 3 * 4 * 1/8 + 4 * 1 * 1/8 = 2.625详解:

  • 由于默认每一个数据元素被查找成功的概率都相同,所以可以把概率单独提取出来,即ASL=( 1 * 1 + 2 * 2 + 3 * 4 + 4 * 1 ) * 1/8=2.625

  • ASL=1 * 1 * 1/8 + 2 * 2 * 1/8 + 3 * 4 * 1/8 + 4 * 1 * 1/8 = 2.625中已经把二叉排序树中所有数据元素全部计入求和

  • ASL=1 * 1 * 1/8 + 2 * 2 * 1/8 + 3 * 4 * 1/8 + 4 * 1 * 1/8 = 2.625的第一项1 * 1 * 1/8由之前的分析可知,就是第一个元素的查找概率 * 查找长度,只不过只有1个;第二项2 * 2 * 1/8由之前的分析可知,就是第二、三个元素的查找概率 * 查找长度,只不过有2个;第三项3 * 4 * 1/8由之前的分析可知,就是第四、五、六、七个元素的查找概率 * 查找长度,只不过有4个;第四项4 * 1 * 1/8由之前的分析可知,就是第八个元素的查找概率 * 查找长度,只不过只有1个

但是,实际中存在查找失败的情况,所以评价一个查找算法的查找效率时,通常会分开考虑查找成功和查找失败两种情况下的ASL,ASL的数量级就可以直接地反应了查找算法的时间复杂度。


四.总结:


http://www.xdnf.cn/news/589843.html

相关文章:

  • 高等数学-无穷级数
  • Unity飞机大战-射击类游戏3D虚拟
  • Athena 执行引擎:在线服务计算的效率王者
  • pandas :从入门到进阶的系统实践笔记
  • 错误: gdalbuildvrt 命令未找到————的问题
  • 数字孪生驱动的离散制造智能升级:架构设计与工程实践
  • C++:关联式容器map容器,multimap容器
  • ssrf漏洞学习
  • 并发编程:各种锁机制、锁区别、并发工具类深刻总结
  • 关于标准盒模型和怪异盒模型
  • python正方形面积 2024年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • 数据分析师如何用OKR驱动业务增长
  • 钉钉通讯录与金蝶云星空无缝集成的技术实现方法
  • AI时代的操作系统:VAST如何重塑基础设施新标准?
  • SenseGlove Nova2 力反馈数据手套:助力外科手术训练的精准触觉模拟
  • 海外 APP 开发的全方位指南:从技术架构到市场进入的综合策略
  • 2023CCPC东北四省赛题解
  • 关于 Burp Suite 详解
  • 一键安装docker
  • Java 内存模型中的读、写屏障
  • 文化基因算法(Memetic Algorithm)详解:原理、实现与应用
  • 服务器磁盘按阵列划分为哪几类
  • MySQL8.0新特性:新特性深度应用解析
  • 【深度学习新浪潮】2025年谷歌I/O开发者大会keynote观察
  • 场景化应用实战系列五:互联网舆情检测
  • 技术分享 | MySQL大事务导致数据库卡顿
  • Java—— IO流 第三期
  • 使用 OpenCV 构建稳定的多面镜片墙效果(镜面反射 + Delaunay 分块)
  • MinerU教程第二弹丨MinerU 本地部署保姆级“喂饭”教程
  • Oracle 物理存储与逻辑管理