注意点:
1.输入的有序数组可能升序,也可能降序
2.若n是偶数,中位数是中间两个数的平均数,除以2结果可能不是整数,需进行处理,保留一位小数
#include <stdio.h>
#define MAX 100000
int main()
{
int i, j, n, array[MAX], temp;
int max, mid, min;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &array[i]);
if(array[0] <= array[1])
{
min = array[0];
max = array[n - 1];
}
else
{
min = array[n - 1];
max = array[0];
}
if(n % 2)
{
mid = array[n / 2];
printf("%d %d %d", max, mid, min);
}
else
{
temp = array[n / 2] + array[n / 2 - 1];
if(temp % 2 == 0)
{
mid = temp / 2;
printf("%d %d %d", max, mid, min);
}
else
{
double mid_f = 0.0;
if(temp > 0)
mid_f = temp / 2 + 0.5;
else
mid_f = temp / 2 - 0.5;
printf("%d %.1lf %d", max, mid_f, min);
}
}
return 0;
}