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的数量级就可以直接地反应了查找算法的时间复杂度。


四.总结:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值