欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分法查找有序序列中第一个大于目标值的位置

程序员文章站 2024-03-16 14:35:10
...

与大于等于不同,此时输出的是r(被夹出来的位置)

#include<iostream>
#include<string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include<vector>
#include<map>
#include<queue>
#include<deque>
#include<cctype>
#include<unordered_set> 
#include<unordered_map> 
#include<fstream>
using namespace std;
int main(){
	int n,p;
	cin>>n>>p;
	int sum=0;
	vector<int>a;
	for(int i=0;i<n;i++){
		int x;
		cin>>x;
		a.push_back(x);
	} 
	sort(a.begin(),a.end());
	int l=0,r=n-1;
	while(l<r){
		int mid=l+(r-l)/2;
		if(a[mid]>p){
			r=mid;
		}
		else{
			l=mid+1;
		}
	}
	cout<<r;
	return 0;
}