c++求最小值
时间: 2023-07-01 07:20:46 浏览: 59
你可以使用STL中的min_element函数来求一个容器中的最小值,例如:
```
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {3, 2, 5, 1, 4};
auto min_it = std::min_element(vec.begin(), vec.end());
std::cout << "The minimum element is: " << *min_it << std::endl;
return 0;
}
```
输出结果为:
```
The minimum element is: 1
```
相关问题
c++最大最小值递归算法
C++中求最大最小值的递归算法可以使用分治法来实现。具体步骤如下:
1. 将数组分成两个部分,分别求出左半部分和右半部分的最大最小值。
2. 比较左半部分的最大值和右半部分的最大值,取其中较大的一个作为整个数组的最大值。
3. 比较左半部分的最小值和右半部分的最小值,取其中较小的一个作为整个数组的最小值。
下面是一个示例代码:
```
#include <iostream>
using namespace std;
void findMinMax(int arr[], int low, int high, int& min, int& max) {
if (low == high) {
min = max = arr[low];
} else if (high - low == 1) {
if (arr[low] < arr[high]) {
min = arr[low];
max = arr[high];
} else {
min = arr[high];
max = arr[low];
}
} else {
int mid = (low + high) / 2;
int min1, max1, min2, max2;
findMinMax(arr, low, mid, min1, max1);
findMinMax(arr, mid + 1, high, min2, max2);
min = min1 < min2 ? min1 : min2;
max = max1 > max2 ? max1 : max2; }
}
int main() {
int arr[] = {3, 5, 1, 9, 8, 4, 7, 2, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, 0, n - 1, min, max);
cout << "最小值为:" << min << endl;
cout << "最大值为:" << max << endl;
return 0;
}
```
c++求数组中非0最小值
可以使用以下代码实现:
```python
def find_min(arr):
non_zero_arr = [x for x in arr if x != 0] # 过滤出非0元素
if not non_zero_arr: # 数组中不存在非0元素
return None
return min(non_zero_arr)
arr = [0, 4, 2, 0, 5, 1, 3, 0]
print(find_min(arr)) # 输出:1
```
该代码先过滤出非0元素,然后在非0元素中取最小值。如果数组中不存在非0元素,返回`None`。