线性查找
线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。
中文名 | 外文名 | 定义 | 应用学科 | 缩写 | 元 素 |
---|---|---|---|---|---|
线性查找 | linear search | 又称为顺序查找 | 计算机技术方法术语 | LS | 顺序查找 |
概念
线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。
查找是对具有相同属性的数据元素(记录)的集合(数据对象)进行的,称之为表或文件,也称字典。对表的查找,若仅对表进行查找操作,而不能改变表中的数据元素,为静态查找;对表除了进行查找操作外,还可能对表进行插入或删除操作,则为动态查找。
工作原理
例如r[i].key表示数据元素i中的关键字项。在流程图中的循环回路上要进行两次比较,即对数据元素的关键字项比较和对循环次数的判断。为了提高运算速度,可以作如下的改进:
-
在原表长n的基础上增加一个元素n+1,将K值送入此元素的关键字项中,这样在循环回路上只要进行一次比较,我们把第n+1个记录称为“监视哨”。这样当n很大时几乎可以节省一半时间。
-
在顺序查找中,在找到第i个记录时,给定值K和记录中的关键字进行了i次比较。
-
由于平均查找长度与表长度n成线性关系,因此当n较大时,顺序查找的效率较低。但顺序查找算法比较简单,且对顺序表的存储结构没有限制,既可以用向量作存储结构也可以用链表作存储结构。
Java源代码:
/**
* 线性查找法
*
* @param list
* @param key
* @return
*/
public static int linearSearch(int[] list, int key) {
for (int i = 0; i < list.length; i++) {
if (list[i] == key) {
return i;
}
}
return -1;
}