二分查找


二分查找过程:首先,把输入的n个数的序列按升序排列,将n个数中间位置的数字与查找的数字m比较,如果两者相等,则查找成功;否则利用中间位置数字将表分成前、后两个子序列,如果中间位置的数字大于查找的数字m,则进一步查找前一子序列,否则进一步查找后一序列。重复以上过程,直到找到满足条件的数字,使查找成功,或直到子序列不存在为止,此时查找不成功。
例如:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1e3 + 5;
int n, m;
int a[N];
void binarySearch(int m)
{
    int left = 0, right = n - 1;
    int mid; 
    while(left <= right)
    { 
     mid = (left + right) / 2;
        if(a[mid]==m) 
        {
            cout <<"YES"<<'\n';
            return;
        }
        if(a[mid]>m) 
        {
            right=mid-1;
        }
        if(a[mid]<m)
        {
            left=mid+1;
         }
    }
    cout<<"NO"<<'\n';

    }
  
int main()
{
    cin >> n;
    for(int i = 0 ; i < n ; i++)
    {
        cin >> a[i];
    }
    sort(a, a+n); 
    cin >> m;
    binarySearch(m); 
    return 0;


全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务