该折半查找是用递归实现的。
折半查找的前提是数组元素有序。
折半查找也称为二分查找,该方法是将给定值与中间位置记录的关键码比较。
若相等,则查找成功;若不相等,则缩小范围,
直至新的查找区间中间位置记录的关键字码等于给定值或者查找区间没有元素时(表明查找不成功)为止。
#include<stdio.h>
int binarySearch(int a[],int low,int high,int index)
{
int mid;
int located=-1;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==index)
{
located=mid;
break;
}
else if(a[mid]>index)
return binarySearch(a,low,mid-1,index);
else
return binarySearch(a,mid+1,high,index);
}
return located;
}
int main()
{
int a[10]={1,3,6,7,9,13,15,22,25,28};
int n=sizeof(a)/sizeof(a[0]);
int low=0;
int high=n-1;
int x;
printf("请输入您要查找的元素:\n");
scanf("%d",&x);
int locate=binarySearch(a,low,high,x);
if(locate!=-1)
printf("在数组a中找到了元素%d,它的下标是:%d\n",x,locate);
else
printf("在数组a中没有找到元素%d。\n",x);
return 0;
}