折半查找的递归和非递归实现(C++)

来源:互联网 发布:js 模拟dos 编辑:程序博客网 时间:2024/05/22 06:28
int BinarySearch(int a[],int nLow,int nHigh,int k){//实现非递归的折半查找//输入:一个升序数组a[nLow...nHigh]和查找键k//输出:一个数组元素的下标,该元素等于k;如果没有这样一个元素,则返回-1int l=nLow,r=nHigh,mid;while (l<=r){mid=(l+r)/2;if (k==a[mid])return mid;else if(k<a[mid]) r=mid-1;else l=mid+1;}return -1;}
int BinarySearchRecur(int a[],int nLow,int nHigh,int k){//实现递归的折半查找//输入:一个升序数组a[nLow...nHigh]和查找键k//输出:一个数组元素的下标,该元素等于k;如果没有这样一个元素,则返回-1if (nLow>nHigh) return -1;else{int mid=(nLow+nHigh)/2;if (k==a[mid])return mid;else if (k<a[mid])return BinarySearchRecur(a,nLow,mid-1,k);elsereturn BinarySearchRecur(a,mid+1,nHigh,k);}}