1.求各元素为正整数的一个数组序列中的最小值
int min(const unsigned int* array, int length) {
if (NULL == array || 0 >= length) {
return -1;
}
unsigned int minValue = array[0];
for (int i = 1; i < length; ++i) {
if (minValue > array[i]) {
minValue = array[i];
}
}
return minValue;
}
2.求各元素为正整数的一个数组序列中的最大值
int max(const unsigned int* array, int length) {
if (NULL == array || 0 >= length) {
return -1;
}
unsigned int maxValue = array[0];
for (int i = 1; i < length; ++i) {
if (maxValue < array[i]) {
maxValue = array[i];
}
}
return maxValue;
}
3.求各元素为正整数的一个数组序列中的最小值和最大值
void min_max(const unsigned int* array, int length, unsigned int& minValue,
unsigned int& maxValue) {
if (NULL == array || 0 >= length) {
minValue = 0;
maxValue = 0;
return;
}
if (length & 1) {
minValue = array[length - 1];
maxValue = array[length - 1];
length = length - 1;
} else {
if (array[length - 1] < array[length - 2]) {
minValue = array[length - 1];
maxValue = array[length - 2];
} else {
minValue = array[length - 2];
maxValue = array[length - 1];
}
length = length - 2;
}
for (int i = 0; i < length; i = i + 2) {
if (array[i] < array[i + 1]) {
minValue = std::min(minValue, array[i]);
maxValue = std::max(maxValue, array[i + 1]);
} else {
minValue = minValue < array[i + 1] ? minValue : array[i + 1];
maxValue = maxValue > array[i] ? maxValue : array[i];
}
}
return;
}
4.测试代码
#include<iostream>
using namespace std;
int main() {
int length = 0;
cout << "请输入数组的长度:" << endl;
while (cin >> length) {
unsigned int* x = new unsigned int[length];
for (int i = 0; i < length; ++i) {
cin >> x[i];
}
//测试最大值与最小值
cout << "min=" << min(x, length) << endl;
cout << "max=" << max(x, length) << endl;
unsigned int min = 0, max = 0;
min_max(x, length, min, max);
cout << "min=" << min << '\t' << "max=" << max << endl;
delete x;
cout << "请输入数组的长度:" << endl;
}
return 0;
}