搜索¶
搜索分为:暴力搜索和自适应搜索,暴力搜索遍历所有元素,自适应搜索根据数据现有特性来优化搜索过程。
1 线性搜索¶
通用性好,无预处理。查询次数少时,搜索时间比自适应搜索预处理时间都短。 适用于数据量小,时间复杂度对效率影像不大。 适用于更新频率高,不需要对数据进行额外维护。
2 二分查找¶
数据必须有序 数据过大时效率稳定 数据更新频率高时开销大
- 插入点 除了找元素外还可以做插入排序
- 查找边界 原数据存在重复时,查找首个(或最后一个)目标的索引
3 哈希查找¶
可以处理多维数据,比如二维可以将索引当作 key 速度最快 占用内存最多 不适合需要有序数据的情况 需要考虑哈希冲突
4 树查找¶
在特定的树结构(例如二叉搜索树)中,基于比较节点值来快速排除节点,从而定位目标元素。
适用于数据量大,因为节点是分散储存的 数据有序,适合维护有序数据范围的查找 数据如果改动大,搜索效率稳定,但平衡树需要更多开销