#include <stdio.h>
#define LENGTH 5
/************************************************************************/
/* 求n个数中最大值和最小值
两两对比,形成两组数一个较大组和一个教小组(复杂度为n/2)
在较大组中取出一个数和改组其他数比较((n-1)/2)
在较小组中取出一个数和改组其他数比较((n-1)/2)
如果为奇数的话,注意再比较一次
复杂度大概为1.5n
*/
/************************************************************************/
void main() {
int a[LENGTH] = {3,4,1,2,9};
int length = LENGTH;
if (length < 1) {
printf("请输入");
return;
}
if (length == 1) {
printf("max: %d, min: %d", a[length - 1], a[length - 1]);
return ;
}
int tmp;
for (int i = 0; i < length; i += 2) {
if (i + 1 < length && a[i] < a[i+1]) {
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
int max = a[0];
int min = a[1];
for (int i = 2; i < length; i += 2) {
if (a[i] > max) {
max = a[i];
}
}
for (int i = 3; i < length; i += 2) {
if (a[i] < min) {
min = a[i];
}
}
//如果为奇数个数
if (length % 2 == 1 && min > a[length - 1]) {
min = a[length - 1];
}
printf("max: %d, min: %d", max, min);
getchar();
}
求n个数中最大值和最小值
最新推荐文章于 2024-07-17 08:00:00 发布