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