代码区
折半查找(二分法查找) :输出下标值和查找次数
#include<stdio.h>
#define N 5 //此处查找五个数,可以自由设定个数
int j=0,flag,mid; //j为查找次数;flag起到了判断是否 //注:因为打算调用一个有返回值的函数,所以全局变量就用上了!
int half_find(int n,int a[N])
{
int low=0,high=N-1;
while(low<=high)
{
j=j+1; //查找次数
flag=0;
mid=(low+high)/2;
if(n==a[mid])
{
flag=1;
return mid;
break; //找到了!
}
else if(n>a[mid]) //如果比预想的大
{
low=mid+1;
continue; //跳出小循环
}
else if(n<a[mid])
{
high=mid-1;
continue;
}
}
}
main()
{
int a[N],n;
printf("input 5 numbers\n");
for(int i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
printf("what do you want to find from small to big\n"); //输入你想查找的数字(一定是按照顺序输入,此处是从小到大)
scanf("%d",&n);
int c=half_find(n,a);
printf("查找次数:%d\n",j);
if(flag) //如果找到了
printf("下标值为:%d\n",c);
else //没有找到!
printf("not find\n");
}