题解 | 查找
查找
https://www.nowcoder.com/practice/d93db01c2ee44e8a9237d63842aca8aa
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define data_len 100
int compare(const void* a, const void* b) {
return *(int*)a - *(int*)b;
}
int main() {
int n;
int a[data_len];
int m;
int target;
while (scanf("%d", &n) != EOF) {
// 数组
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 排序
qsort(a, n, sizeof(int), compare);
// 要查找的m个值
scanf("%d", &m);
for (int i = 0; i < m; i++) {
scanf("%d", &target);
// 二分查找
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (target == a[mid]) {
printf("%s\n", "YES");
break;
} else if (target > a[mid]) {
left = mid+1;
} else {
right = mid-1;
}
}
if (left > right) {
printf("%s\n", "NO");
}
}
}
return 0;
}

