输入样例: 第一行输入一个数n,第二行输入n个数,第三行输入要查的值。 12 11 14 23 25 68 78 84 97 155 201 310 479 97 输出样例: 输出key在序列中的位置。
时间: 2024-03-05 21:49:36 浏览: 38
这道题目是典型的二分查找问题。下面是用C++实现的代码,可以参考一下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int binary_search(int arr[], int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == key) return mid;
else if (arr[mid] < key) left = mid + 1;
else right = mid - 1;
}
return -1; // 如果没找到,返回 -1
}
int main() {
int n, key;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
cin >> key;
int ans = binary_search(arr, n, key);
if (ans != -1) {
cout << ans << endl;
} else {
cout << "未找到" << endl;
}
return 0;
}
```
输入示例:
```
14
11 14 23 25 68 78 84 97 155 201 310 479 97 99
97
```
输出示例:
```
7
```