7-1 二分查找
分数 15
利用二分查找找出所给出的数在数组中的下标
输入格式:
第一行输入n和m表示数组有n个数据,m表示要对m个数进行查找
输出格式:
所有输出在一行完成,行末没有多余空格和多余回车。
输入样例:
5 5
1 2 3 4 5
1 2 3 4 5```
### 输出样例:
```out
0 1 2 3 4
代码长度限制
16 KB
时间限制
50 ms
内存限制
64 MB
代码如下:
#include <>
int Bsearch(int *a, int n, int b);
int main() {
int n;
int m;
scanf("%d", &n);
scanf("%d", &m);
int a[n];
int b;
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int j = 0; j < m; j++) {
scanf("%d", &b);
if (j < m - 1){
printf("%d ", Bsearch(a, n, b));
} else {
printf("%d", Bsearch(a, n, b));
}
}
return 0;
}
int Bsearch(int *a, int n, int b) {
int head = 0;
int tail = n - 1;
int result;
while (head <= tail) {
int mid = (head + tail) / 2;
if (a[mid] == b) {
result = mid;
break;
} else if (a[mid] > b) {
tail = mid - 1;
} else {
head = mid + 1;
}
}
return result;
}