題目描述
中位數定義:一組數據按從小到大的順序依次排列,處在中間位置的一個數(或最中間兩個數據的平均數).
給出一組無序整數,求出中位數,如果求最中間兩個數的平均數,向下取整即可(不需要使用浮點數)
輸入
該程序包含多組測試數據,每一組測試數據的第一行爲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<iostream>
#include<algorithm>
using namespace std;
int main(int argc, char *argv[]) {
int num[10010];
int n;
while(cin>>n)
{
if(n < 1 || n > 10000)
break;
for(int i = 0; i < n; i++)
{
cin>>num[i];
}
sort(num, num + n);
if (n % 2 == 0)
cout << (num[n / 2 - 1] + num[n / 2]) / 2 << endl;
else
cout<<num[n / 2] << endl;
}
return 0;
}