思路:排序一下可以得到最大值和最小值。
对于中位数,看n的奇偶,如果是奇数,那么中位数只有一个直接输出。
如果n是偶数,看两个中位数和是奇数还是偶数,偶数的话,输出和除以2
奇数的话,除以2保留一位小数即可(其实小数位肯定是5)。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int main(){
int n;cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
cout<<a[n];
if(n&1) printf(" %d ",a[n/2+1]);
else {
if((a[n/2]+a[n/2+1])%2==0) printf(" %d ",(a[n/2]+a[n/2+1])/2);
else printf(" %.1f ",(a[n/2]+a[n/2+1])/2.0);
}
cout<<a[1];
return 0;
}
这篇博客介绍了一种C++实现寻找数组中位数的方法。首先对数组进行排序,然后根据数组长度的奇偶性判断中位数。如果长度为奇数,直接输出中间元素;若为偶数,则考虑两个中位数的和,根据和的奇偶性决定输出整数还是带有小数的平均值。最后输出数组的最大值。
390

被折叠的 条评论
为什么被折叠?



