二分查找
#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(m==a[mid])
{cout<<"YES"<<endl;
return;}
else if(m>a[mid])left=left+1;
else right=right-1;
}
cout << "NO" << endl;
}
int main()
{
cin >> n;
for(int i = 0 ; i < n ; i++)
{
cin >> a[i];
}
sort(a, a+n);
cin >> m;
binarySearch(m);
return 0;
}
const int N = 1e3 + 5;:定义了一个常量N,用于表示数组a的最大容量,这里设定为1000 + 5,可以根据实际需要存储的数据量来确定合适的值,在数组定义等场景中使用,以保证数组不会越界。int n, m;:定义了两个整型变量,n通常用于记录输入的数组元素个数,m可能用于后续要查找的目标值等,具体含义结合程序逻辑来看,会在后续代码中通过输入操作赋予它们实际的值。int a[N];:定义了一个整型数组a,其大小为N,用于存储一系列整数,后续会通过输入操作将具体的数值存入这个数组中。- 调用
sort(a, a + n)函数,使用algorithm头文件中提供的sort算法对数组a进行升序排序,这样后续进行二分查找时才能保证算法的正确性(二分查找要求数组是有序的)。 - 再通过
cin >> m从标准输入读取一个整数赋值给m,这个m就是要在已经排序好的数组a中查找的目标值。 - 最后调用
binarySearch(m)函数,传入目标值m进行二分查找操作,根据查找结果输出相应信息,查找结束后main函数返回0,表示程序正常结束。


