零.前言
这一大章(查找系列)都只给出概念,并不以代码实现,更多的地方是数学分析。
一.查找的概述
查找表
是由同一类类型的数据元素构成(或记录)构成的集合。
现在查找一般会有四种操作
- 查询某个
特定的
元素是否在查找表中。 - 检索某个
特定的
元素的各种属性。 - 在查找表中,插入一个数据元素。
- 在查找表中,删掉某个数据元素。
如果我们的查找表只有前两种操作,那么该类表叫静态查找表
。
如果在查找的过程中,出现了增删,那么这类表叫动态查找表
。
二.概念
关键字(Key)
是数据元素中某个数据项的具体值。
若此关键字
可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)
若此关键字
可以识别若干记录,则被称为次关键字(Secondary Key)
.
当数据元素只有一个数据项的时候,其关键字即为该数据元素的值。(比如说一个由结构体组成的顺序表,这个就不是了。)
查找
根据某个特定的值,在查找表中确定一个其关键字等于该给定值的记录或数据元素。若表中存在这样的一个记录,则该查找
是成功
的。查找出的结果可以给出整个信息的记录,或者给出它在表中的索引值。若表中不存在关键字等于给定值的记录,则查找不成功
。此时可以给一个空记录
或空指针
或非法的标记
。
三.性能分析
在前面我们提到,衡量一个算法的三个量度:
- 时间复杂度。
- 空间复杂度。
- 算法的其他性能。
但是在查找中,我们通常以其关键字
和给定值进行过比较的记录个数的平均值作为衡量查找算法好坏的依据。
定义:为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值,称为“查找算法在查找成功时的平均查找长度
”。
四.静态查找
五.动态查找
六.哈希表
后面再写