问题描述:
给定一个整数序列,求中位数。如果序列个数为奇数,中位数为升序的中间位置,如果是偶数,这位升序的中间两个数的平均值。
样例输入:
输入包含多组测试数据,每一组第一行为n(n<10^4)表示这个序列的个数,接下来有n个整数k(0<k<2^31-1)
输入:
5
2 1 4 3 5
输入:
3
输入:
4
1 4 3 2
输出:
3
思路:
简单题。对奇数,偶数分开讨论即可。
代码:
#include <cstdio>
#include <algorithm>
using namespace std;
int a[10010];
int main(){
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
sort(a, a + n);
if(n % 2 != 0){
int m = n / 2;
printf("%d", a[m]);
}else{
int m = n / 2;
int k = m - 1;
double res = (a[m] + a[k]) / 2.0;
printf("%.2lf", res);
}
return 0;
}