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

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

  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
符合公式。

http://www.jsqmd.com/news/183186/

相关文章:

  • TrGLUE和SentiTurca:土耳其语AI终于有了自己的“智商测试卷“
  • 新加坡国大新突破:AI只修改图片需要改的地方,速度提升近2倍!
  • 折半查找的核心逻辑是基于“数组有序”的前提,通过不断将查找区间缩小一半来高效定位目标值
  • Sonic数字人适合哪些行业?虚拟客服、网课讲师、短视频主角皆可
  • 有向网是一种带权的有向图,其中每条边都有一个非负的权值表示从一个顶点到另一个顶点的代价或距离
  • 实战NLP解决方案设计
  • AI健康智慧体检管理系统:用技术把体检变成“私人健康指挥中心”
  • Sonic模型License协议解读:可商用但需署名
  • Sonic模型License协议解读:可商用但需署名
  • qt AbstractTableModel
  • 迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd)算法是图论中最经典的两种最短路径算法
  • AI试验数据综合分析管理系统:数据价值的技术解码器
  • AWS WAF Rate Limit 与 Shield DDoS 防护最佳实践
  • Springboot基于Web的绿色环保网站0z5t9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 032.有序表之AVL树
  • 微PE官网启动盘制作+Sonic环境部署一体化方案
  • 信号与系统综述
  • Sonic数字人前端表格展示可用VXETable官方组件实现
  • HuggingFace镜像网站对比:哪家更适合拉取VoxCPM-1.5-TTS-WEB-UI?
  • 1.2.1 - f
  • 删除具有大量部署的cloudflare pages项目
  • 文本转语音新突破:VoxCPM-1.5实现高效标记率6.25Hz
  • 20260102 之所思 - 人生如梦
  • UltraISO制作U盘启动盘同时部署VoxCPM-1.5-TTS-WEB-UI运行环境
  • 输电杆塔绝缘子红外测温图像检测数据集VOC+YOLO格式420张1类别
  • Blender动画协作?为3D角色赋予真实声音
  • Sonic支持1080P输出?关键在于min_resolution设为1024
  • 导师推荐!8款AI论文软件测评:本科生写论文还能这么快
  • 水务集团停水通知自动化语音外呼系统
  • 对比主流TTS模型:VoxCPM-1.5的优势与性能表现