简单顺序查找对数据表的特性没有要求,即是否具有递增递减特性基本不影响查找的性能。基本死就
是从表的一段开始逐个比较元素,若找到则返回元素在表中对应位置;否则,则返回一个无意义的位置标
识。
/* 顺序查找,a为数组,n为要查找的数组元素个数,key为要查找的关键字*/
int Sequential_Search(int *a, int n, int key)
{
int i = 0;
for(; i < n; i++)
{
if(a[i] == key)
return i;
}
return 0;
}
值得一提的是设置监视哨这一思想,将a[0]设置成监视哨则可以避免每次比较元素后都需要判断下标是
否越界这一问题,从而节省了时间。当然,a[0]中将不能在存放有效元素。
下面介绍一个以整型数组为例的查找实现:
/*带哨兵的直接顺序查找*/
int sequential_search(int a[],int n,int key) //n为数组元素个数,key为待查找元素
{
int i=n;
a[0]=key; //a[0]是监视哨
while(a[i]!=key) //若数组中无key,则一定会得到a[0]=key
i--;
return i; //查找失败返回0
}