引言
1、基本概念
查找表:
\quad \quad 同一类型元素或记录构成的集合。由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。
查找: 又称检索
\quad \quad 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或记录。
关键字key:
\quad \quad 记录中能唯一标识该记录的数据
内查找外查找:
\quad \quad 查找过程在内存进行称内查找,查找过程需访问外存,称外查找
动态查找(dynamic search):
\quad \quad 查找的同时进行增删改操作,查找表称动态查找表
静态查找(static search)
\quad \quad 单纯查找,查找表称静态查找表
2、常用操作
\quad \quad 对查找表的常用操作:
1)查找某个元素是否在表中;
2)检查某个元素的各个属性;
3)插入一个新数据元素;
4)删除某个数据元素。
3、分类
\quad \quad 查找表分为以下两类:
-
静态查找表:只有前面两种查找操作(“查找”、检索)的查找表;
-
动态查找表:除了静态功能之外在查找过程中可以插入不存在的元素或者删除已存在的数据元素。
4、查找算法的评价指标
平均查找长度(ASL):
\quad \quad 为确定记录在查找表中的位置,需要和定值进行比较的关键字个数的期望值。【关键字的平均比较次数,也称平均查找长度。】
A S L = ∑ i = 1 n p i c i ASL=\sum_{i=1}^np_ic_i ASL=i=1∑npici
其中,
n
n
n:记录的个数
p
i
p_i
pi:查找第i个记录的概率
c
i
c_i
ci:找到第i个记录所需的比较次数
5、查找方法
\quad \quad 查找方法取决于查找表的结构,即表中数据元素是依何种关系组织在一起的。
\quad \quad
由于对查找表来说,在集合中查找或检索一个有特定的数据元素时,若无规律可循,只能对集合中的元素一一加以辨认直至找到为止。而这样的查询或检索是任何计算机应用系统中使用频度都很高的操作,因此设法提高查找表的查找效率十分关键。为提高查找效率,一个办法就是在构造查找表时,在集合的元素之间加上某种确定的约束关系。
\quad \quad
根据数据的存储结构,可将查找分为以下几类
5.1 线性表的查找
5.2 树表的查找
\quad \quad 当表插入、删除操作频繁时,为维护表的有序性,需要移动表中很多记录。这时候,我们可以采用动态查找表——几种特殊的树:表结构在查找过程中动态生成:对于给定key,若表中存在,则成功返回;否则,插入关键字等于key的记录。
\quad \quad 根据用用途不同,特殊的树有以下几种:
- 二叉排序树
- 平衡二叉树
- 红黑树
- B-树
- B+树
- 键树
5.3 哈希表的查找
见之前博客