二分查找,按从小到大排序
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