第1关:有15个数按小由到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的下标
#include<stdio.h>
#define N 15
int main()
{
int high,i,x,low,mid,a[N]={4,9,14,16,17,19,28,33,42,51,64,75,84,91,100};
scanf("%d",&x);
/********** Begin **********/
high=14;
low=0;
mid=7;
printf("查找区间下界,上界,中间点[%d,%d,%d]\n",low,high,mid);
while(low<=high){
if(x==a[mid]){
printf("查找成功,%d的下标:%d\n",x,mid);
break;
}
else if(x<a[mid]){
high=mid-1;
mid=(low+high)/2;
}
else{
low=mid+1;
mid=(low+high)/2;
}
if(low>high){
printf("查找区间下界,上界[%d,%d],查找失败",low,high);
break;
}
printf("查找区间下界,上界,中间点[%d,%d,%d]\n",low,high,mid);
}
/********** End **********/
return 0;
}