给定 N 个整数和 K个待查找的整数 M_1, M_2, …, M_K 。如果待查找的整数在给定的 N 个整数中,请输出待查找的整数是数组中第几个元素(从 1 开始计算,第一个元素计 1 而不是 0);如果待查找的整数不在给定的 N 个整数中,则输出 0。
样例输入
6 4
1 2 4 6 7 8
9 1 5 2
样例输出
0 1 0 2
#include <stdio.h>
int main() {
int n;//N个整数
int k;//待查找的K个整数
int numbers[1000001];
int m[1000001];
int i,j, low, high;
// 反复读入数字和查找数字的数量
while (scanf("%d%d", &n, &k) != EOF) {
// 读入给定的数字
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
for (j = 0; j < k; j++) {
// 读入待查找的数字,
scanf("%d", &m[j]);
// 请在下面完成查找读入数字的功能
}
for(j = 0; j < k; j++){
low = 0;
high = i-1;
while(low <= high){
int mid = (low+high)/2;
if(numbers[mid] == m[j]){
printf("%d", mid+1);
break;
}
if(numbers[mid] < m[j]){
low = mid+1;
}
else{
high = mid-1;
}
}
if(low>high)
printf("0");
if(j != k-1)
printf(" ");
}
}
return 0;
}