给你一个包含n个元素的数组a,并且数组中的元素已经按照从小到大的顺序排列好,找出数组a中大于x的最小元素。 c++
时间: 2024-04-12 20:28:41 浏览: 110
数组中求最小元素——C++代码
你可以使用二分查找算法来解决这个问题。下面是一个C++的示例代码:
```cpp
#include <iostream>
#include <vector>
int findNextGreater(std::vector<int> nums, int x) {
int left = 0;
int right = nums.size() - 1;
int result = -1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] > x) {
result = nums[mid];
right = mid - 1; // 继续在左半边查找更小的元素
} else {
left = mid + 1; // 在右半边查找
}
}
return result;
}
int main() {
std::vector<int> nums = {1, 3, 5, 7, 9};
int x = 4;
int nextGreater = findNextGreater(nums, x);
if (nextGreater != -1) {
std::cout << "The next greater element is: " << nextGreater << std::endl;
} else {
std::cout << "There is no element greater than " << x << std::endl;
}
return 0;
}
```
在这个示例中,我们定义了一个函数`findNextGreater`,它接受一个已排序的数组`nums`和一个目标值`x`作为参数。函数通过二分查找算法在数组中寻找第一个大于`x`的元素,并将其返回。
在`main`函数中,我们创建了一个示例数组`nums`和目标值`x`,然后调用`findNextGreater`函数来查找大于`x`的最小元素,并将结果输出到控制台。
阅读全文