Skip to content

搜索

搜索分为:暴力搜索和自适应搜索,暴力搜索遍历所有元素,自适应搜索根据数据现有特性来优化搜索过程。

1 线性搜索

通用性好,无预处理。查询次数少时,搜索时间比自适应搜索预处理时间都短。
适用于数据量小,时间复杂度对效率影像不大。
适用于更新频率高,不需要对数据进行额外维护。

2 二分查找

数据必须有序
数据过大时效率稳定
数据更新频率高时开销大

  • 插入点
    除了找元素外还可以做插入排序
  • 查找边界
    原数据存在重复时,查找首个(或最后一个)目标的索引

3 哈希查找

可以处理多维数据,比如二维可以将索引当作 key
速度最快
占用内存最多
不适合需要有序数据的情况
需要考虑哈希冲突

4 树查找

在特定的树结构(例如二叉搜索树)中,基于比较节点值来快速排除节点,从而定位目标元素。

适用于数据量大,因为节点是分散储存的
数据有序,适合维护有序数据范围的查找
数据如果改动大,搜索效率稳定,但平衡树需要更多开销