编写程序,完成下列功能: (1)输入20个整数到数组中; (2)对20个数按从大到小的顺序排序,输出排序后的数组; (3)输入一个整数x; (4)在数组中,用二分法查找x。如果找到了输出x在数组中的下标,找不到输出-1。
时间: 2024-03-16 10:44:44 浏览: 57
C语言习题集合4(数组).doc
好的,我会帮你实现这个功能。以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int binarySearch(int arr[], int n, int x)
{
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) {
return mid;
}
else if (arr[mid] > x) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1;
}
int main()
{
int arr[20];
cout << "请输入20个整数:" << endl;
for (int i = 0; i < 20; ++i) {
cin >> arr[i];
}
sort(arr, arr + 20, greater<int>());
cout << "排序后的数组为:" << endl;
for (int i = 0; i < 20; ++i) {
cout << arr[i] << " ";
}
cout << endl;
int x;
cout << "请输入一个整数x:" << endl;
cin >> x;
int index = binarySearch(arr, 20, x);
if (index == -1) {
cout << "数组中未找到x!" << endl;
}
else {
cout << "x在数组中的下标为:" << index << endl;
}
return 0;
}
```
程序首先输入20个整数到数组中,然后使用 `std::sort` 函数对数组进行从大到小的排序,输出排序后的数组。接着,程序输入一个整数 x,调用 `binarySearch` 函数进行二分查找,找到了输出 x 在数组中的下标,找不到输出 -1。
阅读全文