基本概念
查找:在数据元素集合中查找是否存在关键字等于某个给定关键字数据元素的过程。
关键字有:
- 主关键字:能够唯一区分各个不同数据元素的关键字。
- 次关键字:通常不能唯一区分各个不同数据元素。
分类
查找可分为:
- 静态查找:只在数据元素集合中查找是否存在关键字等于某个给定关键字的数据元素。
- 动态查找:除包括静态查找的要求外,还包括在查找过程中同时插入数据元素集合中不存在的数据元素,或者从数据元素集合中删除已存在的某个数据元素的要求。
如果在某个数据元素集合中进行了动态查找,则该数据元素集合可能会被改变。
静态查找表:静态查找时构造的存储结构。
主要有三种静态查找表:
- 顺序表
- 有序顺序表
- 索引顺序表
动态查找表:动态查找时构造的存储结构。
主要有两种动态查找表:
- 二叉树结构
- 二叉排序树
- 平衡二叉树
- 树结构
- B_ 树(B-tree树,即B树)
- B+ 树
哈希表既适用于静态查找问题,又适用于动态查找问题,并且是一种查找效率非常高的解决查找问题的存储结构。
衡量查找算法效率的最主要标准是平均查找长度。
平均查找长度:查找过程所需进行的关键字比较次数的平均值。
通常记为
ASL
,数学定义为:
ASL=∑i=1nPiCi
其中, Pi 是要查找数据元素的出现概率, Ci 是查找相应数据元素需进行的关键字比较次数。 Pi 很难通过分析给出,为简化分析,通常取 Pi=1n 。