1 #include2 #include 3 using namespace std; 4 const int N=10000; 5 int a[N],n,x; 6 int binarysearch(int a[],int x,int left,int right) 7 { 8 if(left>right)return -1; 9 int mid=(left+right)/2;10 if(x==a[mid])return mid+1;11 if(x a[mid]14 return binarysearch(a,x,mid+1,right);15 }16 //下面写一下二分的简化代码,共有两种17 int bsearch_1(int a[],int x,int l,int r)18 {19 //与上面的代码相比,这里将a[mid]==x的情况不分开讨论20 //通过while循环实现递归21 while(l =x最小的值22 {23 int mid=l+r>>1;24 if(a[mid] <=x最大的值32 while(l >1;35 if(a[mid]<=x)l=mid;36 else37 r=mid-1;38 }39 return l+1;40 }41 int main()42 {43 cout<<"二分查找一定要在有序序列中进行,当然输入非有序序列,也可将其先排列为有序"< >n;46 cout<<" 需要搜索的数组:";47 for(int i="0;i >a[i];49 sort(a,a+n);50 cout<<"排列好的有序数组为:";51 for(int i=0;i >x;55 cout<<"该数在有序数组中的位置为:"< <<"方法1:"< <