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

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;
}
相关标签: 二分搜索