20140717 二分查找 递归和非递归
1、二分查找代码
二分查找: #include<iostream> using namespace std; int BinarySearch(int a[],int len,int value)//len是a中包含的元素熟练,如a={1,2,3},那么len=3, { int low=0,hi=len,mid=(low+hi)/2; while(low<=hi) { if(value==a[mid]) { return(a[mid]); } else if(a[mid]>value) { hi=mid-1; } else low=mid+1; mid=(low+hi)/2; } return -1; } void main() { int a[]={0,1,2,3,4,5,6,7,8,9}; int result=BinarySearch(a,9,0); //int result=BinarySearch(a,10,9); cout<<result<<endl; } 二分查找递归方法: int BinarySearch(int *a,int lo,int hi,int value) { if(lo>hi) return -1; int start=lo,end=hi,mid=(start+end)/2; if(a[mid]>value) end=mid-1; else if(a[mid]<value) start=mid+1; else return a[mid]; return BinarySearch(a,start,end,value); }