课程 285 / 365
78%
数据结构与算法直觉·理解·10 分钟
正文已完成

查找不是只看速度,还要看前提

比较线性查找、映射查找与二分查找的输入条件和维护成本。

L285

“二分查找更快”只在数据已按目标字段排序且能随机访问时成立;映射查找也依赖稳定键和额外索引。先检查前提,再谈速度,能避免为了偶尔查询付出持续维护成本。

这一课的结果

能根据是否有序、是否有稳定键和更新频率选择基础查找方式。

核心概念

先把关键判断说清楚

01

线性查找前提最少

从头逐项检查无需预处理,适合小集合、一次性任务或查询条件经常变化的场景。

02

二分查找依赖有序

每次排除一半范围很高效,但排序字段必须与查找条件一致,并保持顺序。

03

映射查找依赖键和空间

按唯一键读取通常很快,但需要建立索引、占用空间并在数据变化时同步维护。

案例拆解

200 条配置为什么不必先排序

脚本启动时只检查一次 200 条配置中是否存在废弃字段,团队计划先排序再用二分查找。

  1. 01

    确认任务只执行一次,且查找条件是多个可能变化的字段名。

  2. 02

    直接线性遍历并对每条执行规则检查,不增加排序步骤。

  3. 03

    只有当同一集合被大量重复按固定键查询时,才考虑建立 Set 或映射。

案例结果

实现更短且总工作量更低,没有为一次查询维护不必要的顺序。

提交前练习

现在轮到你

为一项真实查找任务选择线性、二分或映射查找。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

问题是每天按 SKU 查询同一份 5 万商品表数千次;前提是SKU 唯一但原表按更新时间排列;方法是启动时建立 SKU→商品映射,保留原列表顺序,后续按键读取。

评分标准

  • 查找条件具体
  • 前提检查完整
  • 选择考虑了预处理和维护成本

本课收口 · 学习证据

完成,不等于随手打一个勾。

确认阅读、保存练习,再用 30 秒检查和一句话总结留下真实学习证据。

0 / 3
02完成本课练习0 / 3 项必填内容已填写
03通过理解检查约 30 秒
二分查找能够不断排除一半范围的必要前提是什么?
你现在更接近哪一种状态?
完成上面三项后,才能把本课记为已验证。

资料来源

继续核对与延伸阅读

本课内容最近更新于