查找原理简单,重要的是手写对!手写对!手写对!
//二叉查找算法的递归与非递归实现
//注意:查找的数组本身是有序的,切记!
//递归法
int BinarySearch(int arr[],int target,int sta,int endn)
{
if(sta>endn)
return -1;
int mid=(sta+endn)>>1;
if(arr[mid]==target)
return mid;
else if(arr[mid]>target)
endn=mid-1;
else
sta=mid+1;
return BinarySearch(arr,target,sta,endn);
}
int BinarySearch(int arr[],int n,int target)
{
if(arr==NULL||n<=0)
return -1;
return BinarySearch(arr,target,0,n-1);
}
//非递归法
int BinarySearch2(int arr[],int n,int target)
{
if(arr==NULL||n<=0)
return -1;
int low=0,high=n-1;
while(low<=high)
{
int mid=(low+high)>>1;
if(arr[mid]==target)
return mid;
else if(arr[mid]>target)
high=mid-1;
else
low=mid+1;
}
return -1;
}