通过数组下标对应的值与要查找的数进行比对,中间下标为最前面的0和数组实际长度减一的平均值,如果要查找的值比中间下标对应的值大,
low=(中间下标+1),middle=(low+hight)/2;如果要查找的值比初始下标对应的值小,hight=中间下标-1,middle=(low+hight)/2
运行结果:
#include<stdio.h>
void binarySearch(int a[],int x);
int main(){
int arry[10]={1,3,6,7,9,11,14,15,17,24};
int x;
printf("请输入要查找的数:");
scanf("%d",&x);
binarySearch(arry,x);
}
void binarySearch(int a[],int x){
//查找几次,所在位置
int count=0;//记录次数
int low=0,hight=9;
int meddle;
int flag=0;
while(low<=hight){
count++;
meddle=(low+hight)/2;
if(x==a[meddle]){
printf("查找了%d次找到%d",count,x);
printf("\n%d的位置在%d\n",x,meddle);
flag=1;
break;//要加一个break,否则最后low一直小于等于hight 。也可以用return
}
else if(x>a[meddle]){
low=meddle+1;
}
else{
hight=meddle-1;
}
}
if(flag==0){
printf("没有找到");
}
}