二分查找(递归实现):
#include<stdio.h>
int fun(int *arr,int start,int end,int val)
{
int mid=(start+end)/2;
if(start<end)
{
if(arr[mid]==val)
return mid;
else if(arr[mid]>val)
return fun(arr,start,mid,val);
else
return fun(arr,mid+1,end,val);
}
else
return -1;
}
int main()
{
int arr[10]={1,3,4,5,8,9,10,15,26,30};
int val=10;
int left=0;
int right=sizeof(arr)/sizeof(arr[0])-1;
int p=fun(arr,left,right,val);
printf("%d",p);
}