给我一串c++的代码,要求实现,一个有序的数组,从键盘中接收一个数n,在数组中查找其位置,并输出位置,若不在数组中输出-1
时间: 2024-09-23 07:08:23 浏览: 30
当然可以,这里是一个简单的 C++ 程序,它会从用户输入创建一个有序数组,然后搜索指定的数字并返回它的索引。如果数字不存在于数组中,则返回 -1。
```cpp
#include <iostream>
using namespace std;
// 二分查找函数
int binarySearch(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target)
return mid; // 找到目标,返回索引
else if (arr[mid] < target)
left = mid + 1; // 目标大于中间元素,往右半部分查找
else
right = mid - 1; // 目标小于中间元素,往左半部分查找
}
return -1; // 没找到目标,返回 -1
}
int main() {
int n, target;
cout << "Enter the size of the array: ";
cin >> n;
int arr[n]; // 初始化一个大小为n的数组
cout << "Enter elements in ascending order: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
cout << "Enter a number to search: ";
cin >> target;
int position = binarySearch(arr, n, target);
if (position != -1)
cout << "Number found at index: " << position << endl;
else
cout << "Number not found" << endl;
return 0;
}
```
阅读全文