7-16 二分查找
分数 25
全屏浏览
切换布局
作者 李廷元
单位 中国民用航空飞行学院
请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
输入格式:
输入第一行有两个数,第一个数为数组长度n(≤10^6),第二个数为需要查找的数。
接下来有n个整数,以空格或换行符分隔。
输出格式:
输出待查找的数的位置。
输入样例:
5 4
1 2 4 4 5
输出样例:
3
样例解释:
有5个数,查找4出现的位置,4第一次出现在第3个位置,所以输出3。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int s[n+1];
for(int i=1;i<=n;i++){
cin>>s[i];
}
sort(s,s+n+1);
int flag=0;
for(int i=1;i<=n;i++){
if(s[i]>=m)
{
flag=1;
cout<<i;
return 0;
}
}
if(flag==0)
cout<<n+1;
return 0;
}