#include <iostream>
using namespace std;//二分查找的基本应用场景->查找序列中是否有存在符合条件的元素,二分查找是基于有序数列的一种算法
int a[100];
//lower_bound,它寻找的就是第一个满足条件值“大于等于x”的元素的位置;
//upper_bound,它寻找的是第一个满足条件“值大于x”的元素的位置
//这两个函数有四个参数,第一个参数是第一个元素地址,第二个参数是要查找范围的最后一个元素地址,第三个参数是要找的数字,第四个参数如果不输入则还是原来的功能如果输入greater<int>()那么大于变小于
int test01(int a[],int n,int x)
{
//举例1:求序列中的第一个大于等于x的元素的位置
int left=a[0];
int right=a[n-1];
while (left<right)//1,2,3,3,4,5,6
{
int mid=left+(right-left)/2;
if (a[mid]>=x)//说明x的位置在mid的左侧,小于mid
{
right=mid;
}
else left=mid+1;
}
return left;
}
int main(int argc, const char * argv[])
{
// insert code here...
int n;
cin>>n;
for (int i=0; i<n; i++)
{
cin>>a[i];
}
sort(a, a+n);//按照从小到大的顺序进行排列
//cout<<test01(a, n,3);
int p=lower_bound(a, a+n, 3)-a;
cout<< p;
return 0;
}
08-09