408《数据结构》——第七章:查找 (Searching)

文章目录

  • 第六章:查找 (Searching)
    • 核心内容总结
      • 1. 查找的基本概念
      • 2. 顺序查找 (Sequential Search) 和折半查找 (Binary Search)
      • 3. 分块查找 (索引顺序查找)
      • 4. B树 (B-Tree) 和 B+树 (B+Tree)
      • 5. 散列表 (Hash Table) - 哈希表
      • 6. 查找算法的比较与选择
    • 考研备考重点与难点
    • 备考建议

考研408《数据结构》第七章“查找”的详细总结,聚焦核心概念、算法原理、性能分析及考研重点难点。查找是数据处理中最常用的操作之一,本章系统介绍了各种查找技术。

第六章:查找 (Searching)

查找是在数据集合中定位满足特定条件的元素的过程。本章主要研究静态查找表(查找过程中集合基本不变)和动态查找表(查找过程中集合可能插入/删除元素)的查找技术。

核心内容总结

1. 查找的基本概念

  • 查找表 (Search Table): 由同一类型的数据元素(或记录)构成的集合。
  • 关键字 (Key): 数据元素中某个数据项的值,用于标识数据元素。主关键字 (Primary Key) 能唯一标识一个元素;次关键字 (Secondary Key) 可能对应多个元素。
  • 查找 (Searching): 根据给定的某个值(Key),在查找表中确定一个其关键字等于给定值的元素(记录)。
  • 查找成功: 表中存在满足条件的元素,返回其位置或信息。
  • 查找失败: 表中不存在满足条件的元素,返回特定标识(如 NULL0)。
  • 平均查找长度 (Average Search Length, ASL): 衡量查找算法效率的主要指标。定义为查找成功时,需要比较关键字的平均次数
    • ASL_success = Σ(Pᵢ * Cᵢ),其中:
      • Pᵢ 是查找第 i 个元素的概率(通常假设等概率,Pᵢ = 1/n)。
      • Cᵢ 是找到第 i 个元素所需的关键字比较次数
      • n 是表中元素个数。
    • ASL_failure:查找失败时,需要比较关键字的平均次数(需明确定义失败比较过程)。

2. 顺序查找 (Sequential Search) 和折半查找 (Binary Search)

  • 顺序查找 (线性查找):
    • 适用: 无序表有序表(对表无要求)。
    • 思想: 从表的一端开始,逐个比较记录的关键字,直到找到目标或遍历完整个表。
    • 实现:
      int Seq_Search(SSTable ST, KeyType key) {
             
             
          for (int i = 0; i < ST.length; i++) {
             
             
              if (ST.elem[i].key == key) return i; // 查找成功
          }
          return -1; // 查找失败
      }
      // 哨兵优化 (从后向前,0号位置作为哨兵存放key)
      int Seq_Search_Sentinel(SSTable ST, KeyType key) {
             
             
          ST.elem[0].key = key; // 哨兵
          int i = ST.length;
          while (ST.elem[i].key != key) i--;
          return i; // i=0 表示查找失败
      }
      
    • 性能分析:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值