Skip to content

查找基本概念

为什么需要查找基本概念

查找是数据结构中最基本的操作之一。无论是数据库检索、搜索引擎还是操作系统的文件管理,底层都离不开查找算法。

408 考研中,查找章节的基本概念是后续学习顺序查找、折半查找、B 树、散列表等具体算法的前提。理解查找表、关键字、ASL 等核心术语,才能正确分析各种查找算法的效率。

核心思想

查找表

查找表(Search Table)是由同一类型的数据元素组成的集合。根据操作方式不同,分为两类:

类型定义操作典型结构
静态查找表仅做查找操作的查找表查询某元素是否存在、检索属性顺序表、有序表
动态查找表查找的同时进行插入/删除查找时插入不存在的元素,或删除已存在的元素二叉排序树、散列表、B 树

关键字

关键字(Key)是数据元素中某个数据项的值,用来标识一个数据元素。

  • 主关键字:能唯一标识一个数据元素的关键字(如学号)
  • 次关键字:能识别若干个数据元素的关键字(如姓名,可能重复)

查找方法分类

根据查找策略的不同,查找方法可分为:

分类方法特点
基于比较顺序查找、折半查找、分块查找通过关键字比较来逐步缩小范围
基于树表二叉排序树、平衡二叉树、B 树/B⁺ 树利用树结构组织数据,适合动态查找
基于散列散列表(哈希表)通过散列函数直接计算地址,不需要比较

交互可视化

通过下方的交互动画,你可以逐步观察查找基本概念的执行过程:

加载可视化中...

操作详解

ASL 的定义

ASL(Average Search Length,平均查找长度)是衡量查找算法效率的关键指标,定义为查找过程中关键字比较次数的期望值

计算公式:

ASL = Σ(i=1 to n) Pᵢ × Cᵢ

其中:

  • n:查找表中元素个数
  • Pᵢ:查找第 i 个元素的概率(等概率时 Pᵢ = 1/n)
  • Cᵢ:找到第 i 个元素需要的比较次数

查找成功分析

查找成功的 ASL:目标元素在查找表中,找到它所需的平均比较次数。

以顺序查找为例(等概率),查找表有 n 个元素:

  • 查找第 1 个元素:比较 1 次
  • 查找第 2 个元素:比较 2 次
  • ...
  • 查找第 n 个元素:比较 n 次
ASL_成功 = (1 + 2 + ... + n) / n = (n + 1) / 2

不同查找算法的查找成功 ASL 差异很大,这正是选择查找算法的核心依据。

查找失败分析

查找失败的 ASL:目标元素不在查找表中,确认查找失败所需的平均比较次数。

以顺序查找为例(不带哨兵):

  • 无论目标值是什么,都需要比较 n 次才能确认失败
ASL_失败 = n

以折半查找为例,查找失败的比较次数取决于判定树中外部结点(失败结点)的层数,需要根据具体判定树计算每个失败位置的比较次数再求平均值。

注意:408 真题中经常要求分别计算查找成功和查找失败的 ASL,必须区分清楚。

复杂度分析

查找方法ASL(成功)ASL(失败)时间复杂度适用结构
顺序查找(n+1)/2n(或 n+1)O(n)无序/有序表
折半查找≈ log₂(n+1) - 1≈ log₂(n+1)O(log₂n)有序顺序表
分块查找介于顺序与折半之间O(√n)(最优)分块有序表
散列查找取决于装填因子取决于装填因子接近 O(1)散列表

注意:折半查找只适用于有序的顺序存储结构,链表不支持折半查找。

考研高频考点

  • ⭐ ASL 的定义与计算公式(选择题/填空题必考)
  • ⭐ 查找成功 ASL 与查找失败 ASL 的区别与计算(大题高频)
  • ⭐ 静态查找表与动态查找表的区分(概念题)
  • ⭐ 各类查找方法的适用条件与 ASL 对比(选择题高频)
  • 关键字、主关键字与次关键字的定义(概念题)
  • 判定树在 ASL 分析中的应用(结合折半查找考查)