news 2026/6/10 12:19:23

从查找表的一端开始,依次将每个记录的关键字与给定值进行比较

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从查找表的一端开始,依次将每个记录的关键字与给定值进行比较
  1. 顺序查找

    • 基本思想:从查找表的一端开始,依次将每个记录的关键字与给定值进行比较。若匹配成功,则查找成功;若遍历整个表仍未找到,则查找失败。
    • 适用场景:适用于顺序存储结构(如数组)和链式存储结构(如单链表),对数据是否有序无要求。
    • 平均查找长度(ASL)
      • 在等概率情况下,成功查找的平均查找长度为:
        ASL成功=n+12 ASL_{\text{成功}} = \frac{n+1}{2}ASL成功=2n+1
        即平均需要比较约一半的元素。
      • 查找失败时,必须比较全部nnn个元素(若设置监视哨,则为n+1n+1n+1次)。
    • 特点:算法简单、实现容易、适应性强(无需排序),但当表长nnn较大时,效率较低,时间复杂度为O(n)O(n)O(n)
  2. 折半查找(二分查找)

    • 前提条件:查找表必须是按关键字有序排列,且采用顺序存储结构(便于通过下标访问中间元素)。
    • 基本逻辑
      每次将待查关键字与当前查找区间的中间位置元素的关键字比较:
      • 若相等,则查找成功;
      • 若待查值更大,则在右半区间继续查找;
      • 若待查值更小,则在左半区间继续查找。
        重复此过程,直到找到目标或查找区间为空。
    • 特点:效率高,时间复杂度为O(log⁡n)O(\log n)O(logn),但限制较多(需有序、顺序存储)。后续可通过判定树分析其成功与失败情况下的平均查找长度(ASL)。
# 折半查找示例代码(非递归)defbinary_search(arr,target):left,right=0,len(arr)-1whileleft<=right:mid=(left+right)//2ifarr[mid]==target:returnmid# 返回索引elifarr[mid]<target:left=mid+1else:right=mid-1return-1# 查找失败

在等概率情况下,顺序查找的平均查找长度(ASL,Average Search Length)可以通过数学期望的方法进行推导。


推导过程:

假设查找表中有nnn个元素,且每个元素被查找的概率相等(即等概率),均为:
Pi=1n(i=1,2,…,n) P_i = \frac{1}{n} \quad (i = 1, 2, \dots, n)Pi=n1(i=1,2,,n)

  • 查找第1个元素需要比较1次;
  • 查找第2个元素需要比较2次;
  • 查找第iii个元素需要比较iii次;
  • 查找第nnn个元素需要比较nnn次。

由于是“成功查找”的平均情况,我们只考虑目标元素存在于表中的情形。

则平均查找长度为所有查找位置的比较次数的加权平均(权重为概率):

ASL成功=∑i=1nPi×i=1n∑i=1ni=1n⋅n(n+1)2=n+12 ASL_{\text{成功}} = \sum_{i=1}^{n} P_i \times i = \frac{1}{n} \sum_{i=1}^{n} i = \frac{1}{n} \cdot \frac{n(n+1)}{2} = \frac{n+1}{2}ASL成功=i=1nPi×i=n1i=1ni=n12n(n+1)=2n+1


✅ 最终结果:

ASL成功=n+12 \boxed{ASL_{\text{成功}} = \frac{n+1}{2}}ASL成功=2n+1

这说明,在等概率条件下,平均需要比较约一半的元素才能找到目标。


补充说明:

  • 若查找失败,则必须遍历整个表(共nnn次比较),所以失败时的 ASL 为nnn
  • 若设置了“监视哨”(sentinel),将待查值放在表尾,则最多比较n+1n+1n+1次即可确定结果。

示例验证:

n=5n = 5n=5,则:
ASL=1+2+3+4+55=155=3=5+12 ASL = \frac{1+2+3+4+5}{5} = \frac{15}{5} = 3 = \frac{5+1}{2}ASL=51+2+3+4+5=515=3=25+1
符合公式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 6:59:36

Springboot基于Web的绿色环保网站0z5t9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;用户,产品类别,绿色产品,品牌企业,走进环保,法律法规开题报告内容SpringBoot基于Web的绿色环保网站开题报告一、研究背景与意义1.1 研究背景随着全球环境问题的日益严峻&#xff0c;绿色环保已成为社会发展的核心议题。各国政府、企业及公…

作者头像 李华
网站建设 2026/6/9 3:55:48

AI应用架构师必看:10个AI驱动虚拟艺术的核心架构设计技巧

AI应用架构师必看&#xff1a;10个AI驱动虚拟艺术的核心架构设计技巧 副标题&#xff1a;从模型选型到部署优化&#xff0c;构建高性能虚拟艺术生成系统的实战指南 摘要/引言 随着生成式AI技术的爆发&#xff08;如Stable Diffusion、DALL-E 3、Midjourney&#xff09;&…

作者头像 李华
网站建设 2026/6/10 9:41:51

Cosmos IBC跨链传递Sonic数字人身份数据

Cosmos IBC跨链传递Sonic数字人身份数据 在虚拟偶像直播带货、AI教师授课、数字客服交互日益普及的今天&#xff0c;一个核心问题逐渐浮现&#xff1a;这些由人工智能生成的“数字人”&#xff0c;其身份资产往往被锁死在单一平台中。你在A平台训练好的形象&#xff0c;无法直接…

作者头像 李华
网站建设 2026/6/10 11:45:27

有向网是一种带权的有向图,其中每条边都有一个非负的权值表示从一个顶点到另一个顶点的代价或距离

有向网是一种带权的有向图&#xff0c;其中每条边都有一个非负的权值表示从一个顶点到另一个顶点的代价或距离。图 3-42 (a) 描述了这样的一个有向网&#xff0c;包含顶点 $ v_0 \sim v_5 $&#xff0c;并通过边上的数值标明了各边的权重。其对应的邻接矩阵&#xff08;图 3-42…

作者头像 李华
网站建设 2026/6/6 10:24:08

网盘直链助手需会员?我们提供免费高速下载

网盘直链助手需会员&#xff1f;我们提供免费高速下载 在如今这个内容爆炸的时代&#xff0c;谁还没遇到过“点一下下载&#xff0c;等三分钟加载”的窘境&#xff1f;尤其是当你兴冲冲找到一份心仪资料&#xff0c;结果网盘限速到像蜗牛爬——开会员提速&#xff1f;动辄上百元…

作者头像 李华
网站建设 2026/6/10 11:27:21

Spring:代理模式之静态代理动态代理

前言 其实之前写过类似一篇了&#xff0c;重新具体的总结一下 代理模式 为什么要学习代理模式&#xff1f;因为这就是SpringAOP的底层&#xff01;【SpringAOP 和 SpringMVC】面试必定 代理模式的分欸&#xff1a; 静态代理动态代理 代理的原型&#xff1a;静态代理 角色分析&a…

作者头像 李华