查找
(search)当然也是最常见的运算,就是在数据集合中寻找满足条件的数据对象,找到后进一步给出对象的具体信息,在数据库技术中称为检索(retrieval)。
查找的依据
查找的依据是
关键字
(key word)是否相同。
可以唯一地把资料区分出来的数据被称为主关键字。
例如学生的资料,该资料是一个结构体变量;
struct student{
int id ; //学号,可作为主关键字
char name[20]; // 姓名
char sex; // 性别
int age; // 年龄
char address[60]; //家庭地址
float eng, phy,math , electron;
}; //英语,物理,数学,电子学成绩等也可作为关键字
如果关键字小的排在前面,我们称为
升序排列
,反之为
降序排列
。
查找方法
- 最简单的查找——顺序查找,即从数组第一个元素开始,一个一个顺序查下去直到找到或查到最后一个元素为止。
- 数据排列有序时,可以采用对半查找(binary search)。算法的执行效率比顺序查找高。
- 散列查找:散列(hash)查找是最快的查找方法。前文介绍的两种查找方法都是将需查找的关键字值与表中的数据元素的关键字值进行比较而达到查找的目的。如果能找到一个函数 f(key),将关键字经过函数的运算转换为数据表中的位置,直接将数据元素插入在该位置上。在查找中可直接取用该位置的数据元素。这样的组织称为散列,利用散列技术查找的方法称为散列查找,散列查找是一种直接查找。亦用音译称哈希查找。
查找举例
图6.3和图6.4描述对半查找是怎样进行的。这里是升序的有序表。(
)