二分查找第一个比k大的数

来源:互联网 发布:ug线切割编程实例 编辑:程序博客网 时间:2024/05/17 22:13

在这里我们可以直接二分,或者更方便的我们有一个函数 lower_bound(a,a+num,val);

1.直接二分的方法

int binary(int val,int a[],int l,int r){int m;int id;while(l<=r){m=l+(r-l)/2;               //避免溢出if(a[m]>val){id=m;r=m-1;}elsel=m+1;}return id;}

2.STL找的第一个大于k 的下标,注意函数返回的是位置。

int a[100]={1,5,3,9,8};int *x=lower_bound(a,a+5,7);cout<<x-a<<endl;


原创粉丝点击