题目描述:
输入数组长度 n 输入数组a[1...n] 输入查找个数m 输入查找数字b[1...m] 输出 YES or NO
查找有则YES 否则NO 。
输入:
输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。
输出:
如果在n个数组中输出YES否则输出NO。
代码实现:
#include <cstdio>
#include <algorithm>
using namespace std;
int arr[100]; //
bool binarySearch(int n,int x){
//查到了 返回True 否则返回false
int left = 0;
int right = n-1;
while(left <= right){
int mid = (left + right)/2;
if (arr[mid] == x){
return true;
}
else if(arr[mid] > x){
right = mid - 1;
}
else{
left = mid + 1;
}
}
return false;
}
int main(){
int n,m;
while(scanf("%d",&n) != EOF){
for (int i = 0; i < n; ++i) {
scanf("%d",&arr[i]);
}
sort(arr,arr+n); //排序
scanf("%d",&m); //读取数据的数量
for (int i = 0; i < m; ++i) {
int x;
scanf("%d",&x); //每次读取的数据
if(binarySearch(n,x)){
printf("YES\n");
}
else{
printf("NO\n");
}
}
}
}
输入
5
1 5 2 4 3
3
2 5 6
输出
YES
YES
NO
标签:二分,arr,NO,int,mid,查找,YES,输入
From: https://blog.csdn.net/Fxxh_/article/details/136677248