二分查找,按从小到大排序
int BinarySearch(int a[],int x,int n)
{
int low=0;int high=n-1;
while(low<=high)
{
int middle=low+(high-low)>>1;//防止溢出,移位更高效
if(x==a[middle])return middle;
if(x>a[middle])low=middle+1;
else high=middle-1;
}
return -1;//元素未找到
}
递归版本:
int BinSearch(int Array[],int low,int high,int key/*要找的值*/)
{
if (low<=high)
{
int mid = low+(high-low)>>1;
if(key == Array[mid])
return mid;
else if(key<Array[mid])
return BinSearch(Array,low,mid-1,key);
else if(key>Array[mid])
return BinSearch(Array,mid+1,high,key);
}
else
return -1;
}
二分查找及其扩展:
http://www.cnblogs.com/luxiaoxun/archive/2012/10/02/2710161.html