1、使用algorithm中的min_element/max_element
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int n;
while (cin >> n) {
int* p = new int[n];
for (int i = 0; i < n; i++) {
cin >> p[i];
}
cout << *(min_element(p, p + n)) << " " << *(max_element(p, p + n)) << endl;
}
}
2、可以使用limits文件中的numeric_limits<>设置初始最大小值,然后循环数组获取最大小值
#include<iostream>
#include<algorithm>//提供min_element和max_element
#include<limits>//提供numerical_limits<>
using namespace std;
int get_min(int a, int b) {
return a < b ? a : b;
}
int get_max(int a, int b) {
return a > b ? a : b;
}
int main()
{
int n;
while (cin >> n) {
int* p = new int[n];
for (int i = 0; i < n; i++) {
cin >> p[i];
}
int min = numeric_limits<int>::max();
int max = numeric_limits<int>::min();
for (int i = 0; i < n; i++) {
min = get_min(min, p[i]);
max = get_max(max, p[i]);
}
cout << min << " " << max << endl;
}
}
也可以默认默认最大值和最小值为数组首元素,逐个向后比较
int get_max(int a, int b) {
return a > b ? a : b;
}
int find_max(int arr[],int begin, int end) {
if (begin <= end) {
int max = arr[begin];
for (int i = begin; i <= end; i++) {
max = get_max(max, arr[i]);
}
return max;
}
else {
int max = arr[end];
for (int i = end; i <= begin; i++) {
max = get_max(max, arr[i]);
}
return max;
}
}