1、顺序查找
顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)数据开始,逐个进行数据的关键字和查找值比较,若某个记录的关键字和查找值相等,则查找成功;如果直到最后一个(或第 )记录,其关键字和查找值比较都不等时,则表中没有所查的记录,查找失败。
1.1、顺序查找
顺序查找使用for循环,肯定是我们最方便最常用的方法。
/*顺序查找算法*/
int SequentialSearch(int *a, int length, int key)
{
/*数组从1开始,0保留为查找失败*/
for (int i=1; i<=length; i++) /*执行2n次*/
{ /*因为:int i=1执行1次;i<=length执行n次;i++执行n-1次*/
if (a[i] == key) /*执行n次*/
return i; /*return只执行1次*/
}
return 0;
}
使用for循环的算法的时间复杂度为O(3n+1),简化为O(3n)。
1.2、顺序查找优化
上面的顺序查找算法并非完美,仅仅是一个常规方法,因为for循环里面的操作除了必须的i=1和i++以外,每次循环还需要判断i是否越界。
事实上,还可以有更好的方法: