問題 G: 中位數

題目描述

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

輸入

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

輸出

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

樣例輸入

1
468
15
501
170
725
479
359
963
465
706
146
282
828
962
492
996
943
0

樣例輸出

468
501

提示


按題目要求模擬即可

思路:

排序即可

#include<bits/stdc++.h>
using namespace std;
const int maxn = 10005;
int main()
{
    vector<int>ans(maxn);
    int n;
    while(cin >> n && n!=0)
    {
        for(int i=0;i<n;i++)
        {
            cin >> ans[i];
        }
        sort(ans.begin(),ans.begin()+n);
        if(n%2)
            cout<<ans[n/2];
        else
            cout<< (ans[n/2]+ans[n/2 - 1]) / 2;
        cout<< endl;
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章