定义
种类
顺序表查找
时间复杂度O(n)
有序表查找
二分查找
时间复杂度O(logn)
插值查找
二分查找的优化版,每次不二分,而是采用关键字与最大最小值比较后再查找
时间复杂度O(logn)
斐波那契查找
时间复杂度O(logn)
线性索引查找
按照结构分可以分为线性、树形、多级索引
稠密索引
其中索引项是有序的,所以可以通过二分插值等查找方式查找索引项, 再通过索引项映射到真正的数据
分块索引
块内数据结构
倒排索引
由属性值来确定文档位置,而不是由文档确定属性值位置
常用于搜索引擎,基于倒排索引的开源框架lucene
二叉排序树
顺序表查找效率高,但是增删的效率低
中序遍历就可以得到有序的序列
查找和插入都很简单,删除有点麻烦,分为3种情况
前两种情况都好说,第一种直接删除,第二种删除后让唯一的子结点继承被删的位置,
第三种需要通过中序遍历找到该结点的前驱或后继,然后让前驱或后继顶替被删结点
二叉排序树总结
查找最好情况是O(logn),也就是平衡二叉树的形态,最坏情况是O(n),也就是斜树,效率等同于顺序表遍历
效率取决于树的深度,极端的斜树就会导致效率低下,所以就引出了平衡二叉树