2019.3.30折半搜索
程序员文章站
2022-05-13 19:58:45
...
STL库中自带lower_bound(),返回的是指针
#include<bits/stdc++.h>
using namespace std;
int a[10];
int main(){
int n;
cin>>n;
for(int i = 0; i < n; i++)
{
cin>>a[i];
}
int k;
cin>>k;
int m=lower_bound(a,a+n,k)-a;
cout<<m;
}
二分查找
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10];
int k;
int solve(){
int left=0;
int right=n;
while(right-left>1){
int mid=left+(right-left)/2;//防止数据溢出
if(a[mid]>=k){
right=mid;
}
else{
left=mid;
}
}
return left+1;
}
int main(){
cin>>n;
for(int i = 0; i < n; i++)
{
cin>>a[i];
}
cin>>k;
int m=solve();
cout<<m;
}
上一篇: 七律下乡(组诗)