使用递归实现折半查找,主函数可以根据自己的需要进行修改,这里只是为了调试方便。med()函数返回值是要查找的数值在数组中的位置。
#include <stdio.h>
#include <stdlib.h>
int med(int low,int high,int n,int a[5]){
int mid=(low+high)/2;
if(low>=high){
return 0;
}
else if(a[mid]>n){
return med(low,mid-1,n,a);
}
else if(a[mid]<n){
return med(mid+1,high,n,a);
}
else if(a[mid]==n){
return mid+1;
}
}
int main(){
int a[5]={1,2,5,10,88};
int result=med(0,4,33,a);
printf("%d",result);
return 0;
}