基础的二分模板案例解释
#include<bits/stdc++.h>
using namespace std;
int a[10]={1,2,4,6,7,8,9,10,11,12};
int main()
{
int x;
cin>>x;
int l=0,r=9;
while(l<r)
{
int mid=l+r>>1;
if(a[mid]>=x) r=mid;
else l=mid+1;
}
cout<<"第一个大于或者等于x的数是:";
cout<<a[l]<<endl;
l=0,r=9;
while(l<r)
{
int mid=l+r>>1;
if(a[mid]>=x) r=mid;
else l=mid+1;
}
cout<<"第一个大于x的数是:";
cout<<a[l]<<endl;
l=0,r=9;
while(l<r)
{
int mid=l+r+1>>1;
if(a[mid]<=x) l=mid;
else r=mid-1;
}
cout<<"第一个小于或者等于x的数是:";
cout<<a[l]<<endl;
l=0,r=9;
while(l<r)
{
int mid=l+r+1>>1;
if(a[mid]<x) l=mid;
else r=mid-1;
}
cout<<"第一个小于x的数是:";
cout<<a[r]<<endl;
}