美文网首页
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