C++编写一个函数
发布网友
发布时间:2022-04-29 07:56
我来回答
共1个回答
热心网友
时间:2022-06-24 13:40
#include <stdio.h>
// n个元素以2个一组进行处理,有n/2组
// 2个元素之间比较1次,取当前最大最小值各比较一次
// 一共3次,所以最多执行3n/2次比较
void minmax(int* a, int n, int* min, int* max)
{
int tmin, tmax;
if(n & 1)
*min = *max = a[--n];
else {
if(a[n-1] < a[n-2])
*min = a[n-1], *max = a[n-2];
else
*min = a[n-2], *max = a[n-1];
n -= 2;
}
while(n >= 1) {
if(a[n-1] < a[n])
tmin = a[n-1], tmax = a[n];
else
tmin = a[n], tmax = a[n-1];
if(tmin < *min)
*min = tmin;
if(tmax > *max)
*max = tmax;
n -= 2;
}
}
int main()
{
int a[] = {5,1,3,9,2,6,0,8,4,7};
int min, max;
minmax(a, 10, &min, &max);
printf("min:%d max:%d\n", min, max);
return 0;
}