一. 线性查找算法
线性查找算法是指当一个集合的数据杂乱无章的存放时,从第一个元素开始,将每个集合元素键值与待查找的元素的键值(能根据其对集合的数据进行排序)进行比较,直到找到或集合元素都已比较为止。若待查找的元素在集合中存在,则停止查找;若待查找的元素根本就不存在于集合中,则集合中所有元素比较完之后,停止查找。
线性查找算法实现过程中数据结构的选取根据实际情况有所不同。集合中的数据可以存放于数组中,也可以存放于链表中,甚至其它的数据结构中。当算法思想是不变的,就是从第一个元素开始,逐一比较;因此,最差情况下,需要将所有元素比较一遍;尤其当集合中的数据量很大时,算法的运行时间就会明显降低,其与集合的数据量正相关。
本次线性查找算法实现时,数据结构为数组。具体实现(C语言代码)如下:
---------------------------------------------------------------------------------------------------
// 问题: 键x是否存在于拥有n个键的数组S中?
// 输入: 1.正整数n; 2.数组S(其索引范围为0至n-1); 3.待查找的键x
// 输出: location(x在数组S中的位置,若x不在S中,则为0)
int linear_search(int n, double S[], double x)
{
int i = 0;
for( i = 0; i < n; ++i)
{
if( x == S[i])
{
return i+1;
}
}
return 0;
}