#include<stdio.h>
int BinaryFind(int *a,int n,int data) //非递归实现
{
if(a==NULL||n<=0)
return -1;
int begin=0;
int end=n-1;
while(begin<=end)
{
int mid=begin+(end-begin)/2;
if(a[mid]==data)
return mid;
else if(a[mid]<data)
begin=mid+1;
else
end=mid-1;
}
return -1;
}
int BinaryRecursive(int*a,int begin,int end,int data) //递归实现二分查找
{
if(a==NULL||begin>end)
return -1;
int mid=begin+(end-begin)/2;
if(a[mid]==data)
return mid;
else if(a[mid]<data)
return BinaryRecursive(a,mid+1,end,data); //注意return
else
return BinaryRecursive(a,begin,mid-1,data);
}
int main()
{
int a[]={1,2,3,5,6,7};
int n=sizeof(a)/sizeof(a[0]);
for(int i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
printf("4 is in the line: %d\n",BinaryFind(a,n,4));
printf("5 is in the line:%d\n",BinaryRecursive(a,0,n-1,5));
return 0;
}
二分查找
最新推荐文章于 2024-11-25 00:03:42 发布