查找
查找表(Search Table):
是由同一类型的数据元素(或记录)构成的集合。
由于中的数据元素之间存在着完全松散的关系
是由同一类型的数据元素(或记录)构成的集合。
由于中的数据元素之间存在着完全松散的关系
,因此查找表是一种非常灵便的数据结构。
对查找表经常进行的操作:
(1)查询某个 “特定的” 数据元素是否在查找表中。
(2)检索某个 “特定的” 数据元素的各种属性。
(3)在查找表中插入一个数据元素。
(4)从查找表中删去某个数据元素。
(2)检索某个 “特定的” 数据元素的各种属性。
(3)在查找表中插入一个数据元素。
(4)从查找表中删去某个数据元素。
查找表的分类
(1) 若对查找表只作查询和检索操作,则称此类查找表为静态查找表(Static Search Table)。
(2) 若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,则称此类查找表为动态查找表(Dynamic Search Table)。
(2) 若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,则称此类查找表为动态查找表(Dynamic Search Table)。
术语介绍
关键字(Key):
是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。
是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。
主关键字(Primary Key):
若此关键字可以惟一地标识一个记录,则称此关键字为主关键字。
对不同的记录,其主关键字均不同。
次关键字(Secondary Key):
用以识别若干记录的关键字为次关键字。
当数据元素只有一个数据项时,其关键字即为该数据元素的值。
内查找和外查找:
若整个查找过程全部在内存进行,则称为内查找;若在查找过程中还需要访问外存,
若整个查找过程全部在内存进行,则称为内查找;若在查找过程中还需要访问外存,
则称为外查找。这里仅介绍内查找。
平均查找长度ASL:
查找算法的效率,主要看要查找的值与关键字的比较次数,通常用平均查找长度来衡量。
对一个含n个数据元素的表,查找成功时
:
其中:Pi为找到表中第i个数据元素的概率,且有:
Ci为查找表中第i个数据元素所用到的比较次数。 不同的查找方法有不同的Ci。
查找是许多程序中最消耗时间的一部分。因而,一个好的查找方法会大大提高运行速度。
例如
招生录取登记表
学号 | 姓名 | 性别 | 入学总分 | 录取专业 |
┊ | ┊ | ┊ | ┊ | ┊ |
20010983 | 张三 | 女 | 438 | 计算机 |
20010984 | 李四 | 男 | 430 | 计算机 |
20010985 | 王五 | 女 | 445 | 计算机 |
┊ | ┊ | ┊ | ┊ | ┊ |
20010998 | 张三 | 男 | 458 | 计算机 |
┊ | ┊ | ┊ | ┊ | ┊ |
此表为一个查找表。
表中每一行为一个记录,学生的学号为记录的关键字。
若给定值为20010985,则通过查找可得学生王五的各项信息。此时查找是成功的。
若给定值为20011930,则由于表中没有关键字为20011930的记录,则查找不成功。
查找的方法取决于查找表的结构。
由于查找表中的数据元素之间不存在明显的组织规律, 因此不便
于查找。
为了提高查找的效率, 需要在查找表中的元素之间人为地附加某
种确定的关系,换句话说, 用另外一种结构来表示查找表。