问题描述
思路
对输入的数据进行排序即可得到最小值和最大值,对于中位数,若输入数据个数为奇数,则中位数为中间的一个数,若输入数据个数为偶数,则中位数为中间两个数字的平均值,若中间两个数据之和为偶数则直接除2,若为奇数则需要将计算结果转换为浮点数。
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int> vec;
for(int i=0;i<n;i++)
{
int a;
cin>>a;
vec.push_back(a);
}
sort(vec.begin(),vec.end());
int MAX,MID,MIN;
double mid;
MIN=vec[0];MAX=vec[vec.size()-1];
if(vec.size()%2==1)
{
MID=vec[vec.size()/2];
cout<<MAX<<" "<<MID<<" "<<MIN;
}
else
{
if((vec[vec.size()/2]+vec[vec.size()/2-1])%2==0)
{
MID=(vec[vec.size()/2]+vec[vec.size()/2-1])/2;
cout<<MAX<<" "<<MID<<" "<<MIN;
}
else
{
mid=(double(vec[vec.size()/2])+double(vec[vec.size()/2-1]))/2;
cout<<MAX<<" "<<mid<<" "<<MIN;
}
}
return 0;
}