1. 程式人生 > >水題 求中位數

水題 求中位數

題目描述:

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

輸入描述:

該程式包含多組測試資料,每一組測試資料的第一行為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;
}