天天看點

水題 求中位數

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。

本文連結:https://blog.csdn.net/weixin_42449444/article/details/85630499

題目描述:

中位數定義:一組資料按從小到大的順序依次排列,處在中間位置的一個數(或最中間兩個資料的平均數). 給出一組無序整數,求出中位數,如果求最中間兩個數的平均數,向下取整即可(不需要使用浮點數)

輸入描述:

該程式包含多組測試資料,每一組測試資料的第一行為N,代表該組測試資料包含的資料個數,1<=N<=10000.
接着N行為N個資料的輸入,N=0時結束輸入           

複制

輸出描述:

輸出中位數,每一組測試資料輸出一行           

複制

輸入樣例:

4
10
30
20
40
3
40
30
50
4
1
2
3
4
0           

複制

輸出樣例:

25
40
2           

複制

AC代碼:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int N;
    while(cin >> N && N)
    {
        int a[N];
        for(int i = 0; i < N; i++)
        {
            cin >> a[i];
        }
        sort(a,a+N);    //升序排列
        if(N%2 != 0)   //若數組是奇數個
        {
            cout << a[N/2] << endl;
        }
        else    //若數組是偶數個
        {
            cout << (a[N/2]+a[N/2-1])/2 << endl;
        }
    }
    return 0;
}           

複制