数据结构-第七章 查找-笔记

本文探讨了二分查找和分块查找两种不同的查找算法。二分查找适用于有序数组,通过平衡二叉树实现高效检索。而分块查找则结合了顺序与二分查找,尤其关注在查找失败时的处理策略。在特定情况下,通过对索引表进行二分查找,可以提高整体查找效率。分析指出,当块大小与总元素数成比例时,查找平均长度(ASL)最小。文章还强调了在实际应用中如何根据数据结构特点优化这两种查找方法。
摘要由CSDN通过智能技术生成

目录

二分查找

分块查找

存储的结构特点

查找过程

查找效率分析


二分查找

二分查找所对应的二叉判定树:一定是二叉排序树,一定是平衡二叉树。

并且若取 mid = ⌊(low+high)/2⌋,则右子树中的节点数量一定比左子树中的多0个或1个;

        若取 mid = ⌈(low+high)/2⌉,则左子树中的节点数量一定比右子树中的多0个或1个。

分块查找

没用过分块查找,还真没啥印象

存储的结构特点

查找过程

主要区别在于查找分块时采用的是顺序还是二分,顺序查找不用多说,下面介绍一下比较特殊的二分查找

使用二分法查找分块时,一般会出现“查找失败”的情况,但这时一定要在low所指的分块中继续查找。其原因在于二分法查找失败时,最终的low = high + 1,此时所要查找的关键值大小介于high和low所指的元素之间,例如图中的19最终介于high所指向的10和low所指向的20之间,但是这时不应该结束查找,因为按照分块查找的存储结构特点,每个分块保存的元素是这个分块中的最大关键字,所以low所指向的分块中是有可能还存在着所要找的关键值的,例如图中的19就位于low所指向的分块当中。

查找效率分析

查找次数:

注意对索引表采用二分查找时,要仔细判断在索引表中的二分查找次数,例如图中查找27时需要二分查找3次 + 顺序查找1次 = 4次

一种特殊情况是将长度为n的查找表平均分为b个分块,每个分块有s个元素:

当 s = b = \sqrt{n}时,ASL取最小时

对索引表采用二分查找时:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值