C语言二分查找


通过数组下标对应的值与要查找的数进行比对,中间下标为最前面的0和数组实际长度减一的平均值,如果要查找的值比中间下标对应的值大,

low=(中间下标+1),middle=(low+hight)/2;如果要查找的值比初始下标对应的值小,hight=中间下标-1,middle=(low+hight)/2


运行结果:


#include

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("没有找到");

}

}



本次单词:binary search二分查找,middle中间的,count 次数

你可能感兴趣的:(C语言二分查找)