顺序搜索(sequential search)
这个函数检查数v是否在一个事先存储的数的集合 中。从第一个元素开始,顺序比较每个元素。如果达到末尾而未找到所要找的数,那么返回值为-1.否则,返回这个数所在数组位置处的下标。
int search(int a[],int v,int l,int r)
{
int i;
for(i=l;i<=r;i++)
if(v==a[i])
return i;
return -1;
}
二分搜索(binary search)
如果表中的数是有序的,通过把待查找的数与表的中间位置的数进行比较,可以去掉表中一般的数;如果比较结果相等,则查找成功;如果比中间位置的元素小,则在表的左边应用相同的方法;如果比中间位置的元素大,则在表的右边应用相同的方法。
int search(int a[],int v,int l,int r)
{
while(r>=l)
{
int m=(l+r)/2;
if(v==a[m])
return m;
if(v<a[m])
r=m-1;
else
l=m+1;
}
return -1;
}