于爱萍大连:有15个数存放在一个数组中,输入一个数,要求用半查找法找出该数是数组中第几个元素的值。

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 21:14:27
如该数数不在数组中,则输出“无此数”。15个数用赋值的方法在程序中给出。

首先要保证这个数组是有序排列的,下面假设其为升序
/*
二分法查找升序长度为len的数组a中的target元素
查找成功则返回下标
否则,返回-1
*/
int bsearch(int *a,int len,int target)
{
int d=0,u=len,mid,i;

/*检查数组是否已排序*/
for(i=0;i<len;i++)
if (*(a+i)>*(a+i+1))
return -1;

/*查找开始*/
while(d<=u)
{
mid=(d+u)/2;
if (*(a+mid)==target)
return mid;
else if (*(a+mid)<target) d=mid+1;
else u=mid-1;
}
return -1;
}

如果在按半查找法找,那这15个数字应该是有顺序
如果没有顺序不能查找