为什么二分查找总是在强调区间一开一闭
查看原帖
为什么二分查找总是在强调区间一开一闭
932039
lzy20091001楼主2023/7/21 22:05

如题,左闭右闭看起来不会更舒服吗?

#include <iostream>
using namespace std;

int n, m, c;
int a[1000005];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= m; i++)
    {
        int lft = 1, rgt = n;
        cin >> c;
        while (lft <= rgt)
        {
            if (lft == rgt)
            {
                if (a[lft] == c)
                    cout << lft << " ";
                else
                    cout << -1 << " ";
                break;
            }
            int mid = (lft + rgt) / 2;
            if (c <= a[mid])
                rgt = mid;
            else
                lft = mid + 1;
        }
    }
    return 0;
}

2023/7/21 22:05
加载中...