有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数” 用c++解决
时间: 2024-12-20 19:25:29 浏览: 15
在C++中,你可以使用二分查找算法(Binary Search)来解决这个问题。以下是简单的步骤:
1. 定义一个函数`binarySearch`,接受两个参数:一个已排序的整数数组`arr`,以及一个目标值`target`。
```cpp
#include <iostream>
using namespace std;
int binarySearch(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = left + (right - left) / 2; // 计算中间索引
if (arr[mid] == target) {
return mid; // 找到了目标数,返回其索引
} else if (arr[mid] > target) {
right = mid - 1; // 如果目标小于中间数,更新右边界
} else {
left = mid + 1; // 目标大于中间数,更新左边界
}
}
// 数组中未找到目标,返回-1表示“无此数”
return -1;
}
int main() {
int arr[] = {15, 14, 13, ..., 1}; // 假设已按照降序排列的15个数
int size = sizeof(arr) / sizeof(arr[0]);
int num;
cout << "请输入一个数字:" << flush;
cin >> num;
int index = binarySearch(arr, size, num);
if (index != -1) {
cout << "该数在数组中的位置是第" << index+1 << "个元素。" << endl;
} else {
cout << "无此数。" << endl;
}
return 0;
}
```
阅读全文