#include <iostream>
using namespace std;
int numberset[1001] = {0};
int n, m;
bool binary_search(int x)
{
//x的存在范围numberset[l],numberset[l+1]....numberset[r-1]
int l = 0, r = n;
//反复操作至存在范围为空
while(r - l >= 1)
{
int i = (l + r) / 2;//先与最中间的数字比较
if(numberset[i] == x)
return true;
else if(numberset[i] < x)//中间的数字小于x(注意已经排过序了),所以向后半部分查找
l = i + 1;
else
r = i;
}
return false;
}
int main()
{
/**在规模为n(n <= 1000)的数组中查找m**/
cin >> n >> m;
for(int i = 0;i < n;i++)
{
cin >> numberset[i];
}
if(binary_search(m))
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
return 0;
}
二分查找/二分搜索
最新推荐文章于 2023-03-24 09:37:04 发布