美文网首页
ECNU机试之求中位数

ECNU机试之求中位数

作者: DaSE_Bee | 来源:发表于2017-10-07 15:43 被阅读0次

给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;
}

相关文章

网友评论

      本文标题:ECNU机试之求中位数

      本文链接:https://www.haomeiwen.com/subject/ibpjyxtx.html