#include<iostream>
#include<algorithm>
using namespace std;
//排序后二分查找
//更为高效的查找方式再数据结构章节的散列表部分介绍
const int maxN = 105;
int target[maxN]; //find是关键字不能用
int n;
int m;
//注意数组不需要引用传参,直接传参就是指针;形参int arr int arr[] int arr[][]本质上都是一个指针,只是形式差别
//数组有值传递吗?
int bFind(int arr[], int x) { //其实arr如果是全局变量就不用传参;
int l = 0, h = n - 1;
while (l <= h) { //注意这里的等号,不取等号的话就不对
int m = (l + h) / 2;
if (arr[m] == x) {
return 1;
} else if (arr[m] < x) {
l = m + 1;
} else {
h = m - 1;
}
}
return 0;
}
int main() {
int arr[105];
while (cin >> n) {
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr, arr + n);
cin >> m;
for (int i = 0; i < m; i++) {
cin >> target[i];
}
for (int i = 0; i < m; i++) {
if (bFind(arr, target[i])) {
printf("YES\n");
} else {
printf("NO\n");
}
}
}
return 0;
}
注意find是关键字不能用作标识符(变量名、函数名)
数组传参直接就是指针传参;
数组有值传递吗???

京公网安备 11010502036488号