给N个数,求这些数的中位数。(结果保留小数点一位)
Input
第1行,一个数N,N为点的数量。(2 <= N <= 100)
第2 - N + 1行:具体N个数的值。
Output
N个数的中位数。(保留小数点一位)
Input示例
2
1
2
2
1
1
Output示例
1.5
1.0
解题思想:N是偶数时,输出N个数和的平均值;N是奇数时,将N个数排序,输出第N/2+1个数。
参考代码:
#include <iostream>
#include <stdio.h>
#include <algorithm>
using std::cin;
using std::cout;
using std::endl;
int a[100];
int cmp(int x,int y)
{
return x<y;
}
int main()
{
int n;
while(cin>>n)
{
for(int i=0; i<n; i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);
if(n%2==0)
{
int sum=0;
for(int i=0; i<n; i++)
{
sum+=a[i];
}
printf("%.1f\n",(float)sum/n);
}
else cout<<a[n/2]<<endl;
}
return 0;
}
网友评论