二分查找

#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,表示程序正常结束。
全部评论

相关推荐

Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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