算法 | 最好情况 | 最好时间复杂度 | 最坏情况 | 最坏情况复杂度 | 平均时间 |
---|---|---|---|---|---|
顺序表查找 | 元素在第一个 | O(1) | 元素在最后一个 | O(n) | O(n) |
折半查询 | 元素在中间 | O(1) | 元素在两头 | O(logn) | O(logn) |
插值查询 | 元素在第一个插值处 | O(1) | 元素在两头 | O(logn) | O(logn) |
斐波纳挈数列查询 | 元素在第一个黄金分割点处 | O(1) | 元素在两头 | O(logn) | O(logn) |
- 折半查询: mid=low+high2=low+high−low2
- 插值查询: mid=low+key−a[low]a[high]−a[low](high−low)
- 斐波纳挈查询: mid=low+F[k−1]−1
索引
- 稠密索引:在线性索引中,将数据集中的每个记录对应一个索引项
- 索引项一定是按照关键码有序的排序树
- 分块索引:块内无序,块间有序,复杂度 O(n−−√)
- 倒排索引