題目描述
中位數定義:一組數據按從小到大的順序依次排列,處在中間位置的一個數(或最中間兩個數據的平均數).
給出一組無序整數,求出中位數,如果求最中間兩個數的平均數,向下取整即可(不需要使用浮點數)
輸入
該程序包含多組測試數據,每一組測試數據的第一行爲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;
}