1. 程式人生 > >二分搜尋小的最大值

二分搜尋小的最大值

//寫一個函式LowerBound,在包含size個元素的、從小到大排序的int陣列a裡查詢比給
//定整數p小的,下標最大的元素。找到則返回其下標,找不到則返回-1
#include<iostream>
using namespace std;
#include<algorithm>
int LowerBound(int a[],int size,int p)
{
    int last=-1;
    int l=0;
    int r=size-1;
    //cout<<a[0]<<endl;
    while(l+1<r)
    {
        int
middle=l+(r-l)/2; if(a[middle]>=p) { r=middle-1; } else { last=middle; l=middle+1; } } return last; } int main() { int num; cin>>num; int a[num]; for(int i=0;i<num;++i) cin>>a[i]; sort(a,a+num); int
m; cin>>m; cout<<LowerBound(a, num, m); }