PAT练习 查找
Description
输入数组长度 n
输入数组 a[1...n]
输入查找个数m
输入查找数字b[1...m]
输出 YES or NO 查找有则YES 否则NO 。
Input
输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。
Output
如果在n个数组中输出YES否则输出NO。
Sample Input
6 3 2 5 4 7 8 2 3 6
Sample Output
YES NO
C++实现
#include <stdio.h>
void binarySearch(int a[],int left,int right,int x){
int mid;
bool flag=false;
while(right>=left){
mid=left+(right-left)/2;
if(a[mid]==x){
flag=true;
break;
}else{
if(a[mid]>x){
right=mid-1;
}else{
left=mid+1;
}
}
}
if(flag){
printf("YES\n");
}else{
printf("NO\n");
}
}
int main(){
int n,m,a[101],b[101];
while (scanf("%d",&n)!=EOF) {
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int i=0;i<m;i++){
scanf("%d",&b[i]);
}
sort(a,a+n);
for(int i=0;i<m;i++){
binarySearch(a, 0, n, b[i]);
}
}
}