设已有一个10个元素的整形数组a,且按值从小到大有序排列,输入一个整数x,然后在数组中查找x,如果找到,输出对应下标,否则,输出“Not Found”
#include <stdio.h>
int Bsearch(int *p,int n,int x){
int low=0;
int high=n-1;
int mid;
while(low<=high){
mid=(low+high)/2;
if(x==p[mid])
break;
else if(x<p[mid]){
high=mid-1;
}
else
low=mid+1;
}
if(low<high){
return mid;
}
else
return -1;
}
int main(){
int a[10]={10,14,21,38,45,47,53,81,87,99};
int n=0,m=0;
scanf("%d",&n);
m=Bsearch(a,10,n); //调用函数
if(m>0)
printf("%d\n",m);
else
printf("Not Found\n");
return 0;
}