跳到主要内容

查找概述

**查找(Searching)**是在数据集合中确定关键字等于给定值的数据元素(或判定不存在)的过程。

本文解决什么问题

  • 查找要评价什么指标
  • 顺序 / 二分 / 哈希如何选型
  • 本章各篇分工

本部分学什么

文章内容
顺序查找逐个比较,适用任意表
二分查找有序表上的减治查找
哈希表由关键字直接计算位置
哈希冲突处理开放定址、链地址等

衡量指标

指标含义
平均查找长度 ASL成功(或失败)查找的平均比较次数
时间复杂度成功 / 失败情形
静态 / 动态是否频繁插入删除
是否有序能否用二分等有序方法

选型直觉

条件更合适
无序、表很小顺序查找
有序且可随机访问、少改动二分查找
动态、按键高频查哈希表
要有序遍历 / 范围查询平衡树(std::map)等

小结

先明确数据是否有序、是否需要高效更新,再在顺序、二分、哈希之间选型。

下一篇:顺序查找