#include #include using namespace std;//查找/*实现二分搜索输入一组有序的数组和一个需要查找的数值输出该数值的位置,若没有,则返回-1*///由于C++数组没有直接获得数组长度的函数,因此使用sizeof(array)/sizeof(array[0]),可以用模板定义template int GetArrayLen(T& array){ return (sizeof(array)/sizeof(array[0]));}//测试int binary_search_1(int a[],int left,int right,int input);int binary_search_2(int a[],int n,int input);int main(int argc, char const *argv[]){ int a[]={1,2,3,4,5,6,7,8,9,10,11}; int n=GetArrayLen(a); int result=binary_search_1(a,0,n,10); // cout< < =right)return -1;//递归基础 //递归主体 int mid=(left+right)/2; if (a[mid]==input)return mid;//mid是下标,从0算起 if (a[mid] input)right=mid-1; else left=mid+1; if (left>=right)return -1; mid=(left+right)/2; } return mid;}