算法时间复杂度:θ(n)
问题:在不同元素a1,a2,...,an的表中为元素定位,或判定x不在该表中。这一搜索问题的解是表中等于x的那一项的位置(即,若x=ai,那么i就是解),或当x不在表中时解为0。
线性搜索算法
从比较x和a1开始。若x=a1,那么解就是a1的位置,也就是1。
当x≠a1时,比较x和a2。
若x=a2,那么解就是a2的位置,也就是2。
当x≠a2时,比较x和a3。
继续这一过程,逐一比较x和表中的每一项,除非不出现相等,否则一旦发现相等,解就是该项的位置。
如果已搜索了整个表却不能为x定位,那么解是0。
#include <stdio.h>
#define LEN 10
int a[LEN] = { 12,98,43,34,66,3,89,3,6,90 };
int line_search(int x)
{
int i = 0, location = 0;
while (i<LEN && x != a[i])
i = i + 1;//全部搜索完毕或找到x结束循环
if (i<LEN)
location = i + 1;
else
location = 0;
printf("数%d在a[10]的%d位置\n", x, location);
return 0;
}
int main(void)
{
int x = 89;
line_search(x);
return 0;
}