第8章查找本章学习内容8
1查找的基本概念8
2线性表的查找8
3树表查找8
4散列查找8
1查找的基本概念在前面几章中,我们介绍了线性表、栈和队列、串等线性结构及多维数组、广义表、树和图等非线性结构,讨论了它们的逻辑结构、存储结构及运算,并且在运算中,曾经讨论过一些简单的查找运算
但由于查找运算的使用频率相当高,几乎在任何一个计算机系统中都会涉及到,所以当问题的规模相当大时,查找算法的效率就显得十分重要
因此,本章将着重讨论各种查找方法,并通过对它们的效率分析来比较各种查找方法的优劣
查找,也称为检索
在我们的日常生活中,随处可见查找的实例
如查找某人的地址、电话号码;查某单位45岁以上职工等,都属于查找范畴
本书中,我们规定查找是按关键字进行的
所谓关键字(key)是数据元素(或记录)中某个数据项的值,用它可以标识(或识别)一个数据元素
例如,描述一个考生的信息,可以包含:考号、姓名、性别、年龄、家庭住址、电话号码、成绩等关键字
但有些关键字不能惟一标识一个数据元素,而有的关键字可以惟一标识一个数据元素
如刚才的考生信息中,姓名不能惟一标识一个数据元素(因有同名同姓的人),而考号可以惟一标识一个数据元素(每个考生考号是惟一的,不能相同)
我们将能惟一标识一个数据元素的关键字称为主关键字,而其他关键字称为辅助关键字或从关键字
有了主关键字及关键字后,我们可以给查找下一个完整的定义
所谓查找,就是根据给定的值,在一个表中查找出其关键字等于给定值的数据元素,若表中有这样的元素,则称查找是成功的,此时查找的信息为给定整个数据元素的输出或指出该元素在表中的位置;若表中不存在这样的记录,则称查找是不成功的,或称查找失败,并可给出相应的提示
因为查找是对已存入计算机中的数据所进行的操作,所以采用何种查找方法,首先取决于使用哪种数据结构来表示“表”,即表中结点是按何种方式组织的