二分查找

来源:互联网 发布:java equals int 编辑:程序博客网 时间:2024/06/13 05:47
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
const int maxn=1000009;
using namespace std;
int middlecheck(int a[],int len,int m)
{   int high=len-1;
    int low=0;
    int mid;
     while(high>=low)
     {   mid=(high+low)/2;
         if(a[mid]<m&&a[mid+1]>m) break;
         if(a[mid]<m) low=mid+1;
         else{
             high=mid;


         }




     }
     cout<<mid+1<<endl;


return 0;
}
int main()
{  int n,m;
   int l[maxn];
   cin>>n>>m;
   for(int i=0;i<n;i++)
   {  scanf("%d",&l[i]);




   }
   //sort(l,l+m);
   middlecheck(l,n,m);
    return 0;

}

也可以用stl中的函数来执行这个操作。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define maxn 200
using namespace std;
int main()
{  int m[maxn]={1,3,5,7,9};
   int n;
   cin>>n;
   //注意,这俩函数返回的都是坐标,
    //一个是大于他的第一个,一个是小于等于
   int l=upper_bound(m,m+5,n)-m;
   int c=lower_bound(m,m+5,n)-m;
   printf("%d  %d\n",l,c);








    return 0;
}

0 0