【C语言折半查找】
#include <stdio.h>
#include <conio.h>
int binserarch(int x,int v[],int n);
int main(void)
{
int v[]={10,20,30,40,50,60}; /*由小到大排序好的数据*/
int x; /*存放要查找的数*/
int arr_size;
int result;
arr_size=(sizeof(v)/sizeof(v[0]));
printf("请输入要查找的数:\n");
scanf("%d",&x);
result=binserarch(x,v,arr_size);
if (-1!=result)
{
printf("找到了,所在位置是%d\n",result);
}
else
{
printf("没有找到\n");
}
getch();
return 0;
}
/*****折半查找***/
int binserarch(int x,int v[],int n)
{
int low=0;
int high=n-1;
int mid;
while(low<=high)
{
mid=(low+high)/2;
if (x<v[mid])
{
high=mid-1;
}
else if(x>v[mid])
{
low=mid+1;
}
else
{
return mid;
}
}
return -1;
}