用c++语言编写一个程序,要求键盘输入数组中元素的个数,数组的元素,要查找的数字,结果返回查找的数字在数组中的位置,若数组中没有要查找的数则输出“查无此数”,然后分别编写实现数组的顺序操作和二分法查找实现代码
时间: 2023-11-26 15:03:00 浏览: 86
C++将数字从键盘读入数组并统计数字出现的次数,元素从大到小的顺序排序
好的,我来为您解答这个问题。首先,这是一个比较基础的算法问题,我们可以通过以下两种方式分别实现。
### 数组顺序操作
实现数组的顺序操作,我们可以使用 for 循环遍历整个数组,查找要查找的数字。具体实现方法如下:
```c++
#include <iostream>
using namespace std;
int main()
{
int n, arr[100], x;
cout << "请输入数组元素的个数: ";
cin >> n;
cout << "请输入 " << n << " 个整数: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
cout << "请输入要查找的数字: ";
cin >> x;
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
cout << x << " 在数组中的位置是 " << i + 1 << endl;
return 0;
}
}
cout << "查无此数" << endl;
return 0;
}
```
### 二分法查找
使用二分法查找,我们需要先将数组进行排序,然后通过不断缩小查找范围来查找要查找的数字。具体实现方法如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, arr[100], x;
cout << "请输入数组元素的个数: ";
cin >> n;
cout << "请输入 " << n << " 个整数: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
cout << "请输入要查找的数字: ";
cin >> x;
sort(arr, arr + n); // 对数组进行排序
int left = 0, right = n - 1, mid;
while (left <= right) { // 不断缩小查找范围
mid = (left + right) / 2;
if (arr[mid] == x) {
cout << x << " 在数组中的位置是 " << mid + 1 << endl;
return 0;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
cout << "查无此数" << endl;
return 0;
}
```
以上就是使用 C++ 实现数组查找的两种方法,希望能对您有所帮助。
阅读全文