请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
输入第一行有两个数,第一个数为数组长度n(≤10^6),第二个数为需要查找的数。
接下来有n个整数,以空格或换行符分隔。
输出待查找的数的位置。
- 5 4
- 1 2 4 4 5
3
有5个数,查找4出现的位置,4第一次出现在第3个位置,所以输出3。
不需要用到二分,如需要二分知识,请看下面链接
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- int n,i,x,k=0,a[1000005];
- cin>>n>>x;
- for(i=1;i<=n;i++)cin>>a[i];
- for(i=1;i<=n;i++){
- if(x<=a[i]){k=1;cout<<i;break;}
- }
- if(k==0){
- cout<<n+1;
- }
- return 0;
- }