被查找的对象是由一组记录组成的表或文件,而每个记录则由若干个数据项组成,并假设每个记录都有一个能唯一标识该记录的关键字。
在这种条件下,查找的定义是:给定一个值k,在含有n个记录的表中找出关键字等于k的记录。
有两种查找结果:
线性表上常见的查找方法有:
查找与数据的存储结构有关,线性表有顺序和链式两种存储结构。
被查找的顺序表元素类型定义如下:
typedef int KeyType; // 关键字的数据类型typedef struct{ KeyType key; InfoType data; // 其他数据, 可选} RecType;
顺序查找是一种最简单的查找方法。它的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。
// 顺序查找int seqSearch(RecType R[], int n, KeyType k){ int i = 0; // 从表头往后找 while (i < n && R[i].key != k) i++; if (i >= n) return 0; else return i + 1;}
顺序查找的优点为算法简单且适用面广,缺点为查找效率相对较低。