题目内容:有一个N(1≤N≤100)个元素的数组A,按由小到大顺序存放。请编写程序,输入一个数m,用二分查找法找出该数在数组中的位置(即数组的下标)。如果该数不在数组中,则输出null。 输入格式:第1行输入n,第2行输入n个已排好序的数组元素,数据之间用空格分隔。第3行输入m。 输出格式:若找到输出它数组的下标,否则输出null 输入样例: 15 1 4 9 13 21 34 55 89 144 233 377 570 671 703 812 34 输出样例: 5 C++
时间: 2024-02-12 18:03:55 浏览: 158
这是一个二分查找的问题,可以按照以下步骤解决:
1. 读入整数 n 和数组 A;
2. 读入整数 m;
3. 使用二分查找法在数组 A 中查找 m;
4. 如果找到 m,则输出它在数组中的下标;
5. 如果没有找到 m,则输出 null。
具体实现代码如下:
```cpp
#include <iostream>
using namespace std;
const int N = 110;
int n;
int a[N];
int binary_search(int x) {
int l = 0, r = n - 1;
while (l < r) {
int mid = l + r >> 1;
if (a[mid] < x) l = mid + 1;
else r = mid;
}
if (a[l] == x) return l;
else return -1;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int x;
cin >> x;
int pos = binary_search(x);
if (pos == -1) cout << "null" << endl;
else cout << pos << endl;
return 0;
}
```
输入样例:
```
15
1 4 9 13 21 34 55 89 144 233 377 570 671 703 812
34
```
输出样例:
```
5
```
阅读全文