查找表:由同一类型的数据元素(或记录)构成的集合,也就是所有需要被查的数据所在的集合,我们给一个统称叫查找表。

    关键字:数据元素中某个数据项的值,又称为键值,用它可以标识(不一定唯一)一个数据元素。也可以表示一个记录的某个数据项(字段),我们称它为关键吗。

    主关键字:若此关键字能唯一的标识一个记录,则称此关键字为主关键字,这也就意味着,对不同的记录,其主关键字不相同。主关键字所在的数据项成为主关键码。

    次关键字:可以识别多个数据元素(或记录)的关键字,我们成为次关键字。次关键字可以理解为不以唯一标识一个数据元素(或记录)的关键字,它对应的数据项就是次关键码。

    查找:根据某个给定的值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。若表中存在这样的一个记录,则称查找是成功的,此时查找的结果是给出整个记录的信息或者指示该记录在查找表中的位置(哈希表查找)。若表中不存在关键字等于给定的值,则称查找不成功,此时查找的结果可以给出一个“空”记录或“空”指针。

    查找表的分类静态查找表和动态查找表。

静态查找表:只做查找操作的查找表。它的主要操作有:

1)查询某个“特定的”数据元素是否在查找表中。

2)检索某个“特定的”数据元素及其各种属性。

    动态表查找在查找的过程中同时插入不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。动态表的查找操作:

1)查找时插入数据元素。

2)查找时删除数据元素。

    为了提高查找效率,我们需要专门为查找操作设置数据机构,这种面向查找操作的数据结构称为查找结构。

    从逻辑上来说,查找所基于的数据结构是集合,集合中的记录之间没有本质关系。可是要想获得较高的查找性能,我们就能不改变数据元素之间的关系,在存储时可以将查找表组织成表、树结构。

    例如:对于静态查找表来说,我们不妨应用线性表结构来组织数据,这样可以使用顺序查找算法,如果再对主关键字排序,则可以应用折半查找计数进行高效的查找。

    如果需要动态查找,则会复杂一些,可以考虑二叉排序树的查找计数。

    另外,可以使用散列计数来解决一下查找问题。