该方法使用必须先排序
设已有一个n(1≤n≤10)个元素的整型数组a,且按值从小到大有序排列。输入一个整数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”
#include <stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},low,high,mid,x,n=10;
scanf("%d",&x);
low=0,high=n-1;//因为数组首项为0,末项为n-1
while(low<=high)//当low=higt时, 说明mid即为所找的目标
{
mid=(low+high)/2;
if(x==a[mid])
break;
else if(x<a[mid])
high=mid+1;//+1是为了防止当mid为小数而少算一位数
else if(x>a[mid])
low=mid-1;//-1同理
}
if(low<=high)
printf("%d",mid);
else
printf("not found");
return 0;
}