数据结构(九)查找

 

定义

 

种类

顺序表查找

 
时间复杂度O(n)
 

有序表查找

二分查找
时间复杂度O(logn)
 

插值查找

二分查找的优化版,每次不二分,而是采用关键字与最大最小值比较后再查找
时间复杂度O(logn)
 

斐波那契查找

时间复杂度O(logn)
 

线性索引查找

按照结构分可以分为线性、树形、多级索引
 

稠密索引

 
其中索引项是有序的,所以可以通过二分插值等查找方式查找索引项, 再通过索引项映射到真正的数据
 

分块索引

块内数据结构
 
 

倒排索引

由属性值来确定文档位置,而不是由文档确定属性值位置
常用于搜索引擎,基于倒排索引的开源框架lucene
 

二叉排序树

顺序表查找效率高,但是增删的效率低
中序遍历就可以得到有序的序列
 
查找和插入都很简单,删除有点麻烦,分为3种情况
前两种情况都好说,第一种直接删除,第二种删除后让唯一的子结点继承被删的位置,
第三种需要通过中序遍历找到该结点的前驱或后继,然后让前驱或后继顶替被删结点
 
二叉排序树总结
查找最好情况是O(logn),也就是平衡二叉树的形态,最坏情况是O(n),也就是斜树,效率等同于顺序表遍历
效率取决于树的深度,极端的斜树就会导致效率低下,所以就引出了平衡二叉树
 

平衡二叉树

 
原文地址:https://www.cnblogs.com/ulysses-you/p/7130272.html