题解 | 二分查找方式

#include <iostream>
#include <algorithm>
using namespace std;

bool binarysearch(int n,int target,int a[])  //函数传入数组格式:加[]
{
    int left=0;
    int right=n-1;
    while(left<=right)
    {
        int middle=(left+right)/2;  //中间元素
        if(a[middle]>target)  //左
        {
            right=middle-1;
        }
        else if(a[middle]<target)  //右
        {
            left=middle+1;
        }
        else{
            return true;
        }
    }
    return false;
}

int main() {
    int n;
    cin >> n;
    int a[n];
    for(int i=0; i<n; i++)
    {
        cin >> a[i];
    }
    sort(a,a+n);  //二分查找前先排序
    int m;
    cin >> m;
    for(int j=0; j<m; j++)
    {
        int target;
        cin >> target;
        if(binarysearch(n,target,a))
        {
            cout << "YES" << endl;
        }
        else{
            cout << "NO" << endl;
        }
    }
}

#考研复试机试上机个人解析#
全部评论

相关推荐

董春花_:真诚无罪,别听评论区那个清华的。按他的逻辑,你有分寸人觉得你是不想来,你积极热情人觉得你太想来,你好骗人就可你养鱼,你不好骗人觉得你服从性不高,合着**做啥都白扯。保持谦逊礼貌与对offer的积极性不才是最正常,也正确的做法么?招聘方的错强加到应聘者身上,***何不食肉糜。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务