二分查找
题目每次给一个不同的数据查找,用顺序查找
题目给一份数据然后查很多次,用二分查找
图片来源于王道机试课程
代码
#include <cstdio>
#include <map>
using namespace std;
int main() {
map<int,int> findIndex;
int m,n;
int arr[101];
while(scanf("%d",&n) != EOF){
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
//将数组的元素作为键,数组元素的下标作为值,插入到map当中
findIndex[arr[i]] = i;
}
scanf("%d",&m);
for (int i = 0; i < m; ++i) {
int findNum;//带查找的元素
scanf("%d",&findNum);
//find函数会返回找到的那个元素的迭代器
if(findIndex.find(findNum) == findIndex.end()){
//这种情况下,是没有找到元素
printf("NO\n");
} else{
printf("YES\n");
}
}
}
return 0;
}