中位数
题目描述
给定个长度为N的非降数列,求数列的中位数,
中位数:当数列的项数N为奇数时,处f中间位置的变量值即为中位数:当N为偶数时,中位数则为处于中间位置的两个数的平均数。
输入格式
输入数据第一行是一个整数T(1 <T < 100),表示测试数据的组数。对三每组测试数据:
第一行是一个正整数N(1<N< 100),表示数列长度。
第二行有N个整数,数之间用空格限开,所有的整数都不超过105,表示这个数列。输出格式
对于每组测试数据,输出数列的中位数。请不要输出小数点末尾多余的0。
输入样例
2
4
1 1 2 2
5
1 1 2 2 3
输出样例
1.5
2
AC代码
#include<bits/stdc++.h>
#define For(i,start,end) for(int i=start;i<end;i++)
#define MAXN 110
using namespace std;
int arr[MAXN];
int main()
{
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
For(i,1,n+1){
scanf("%d",&arr[i]);
}
if(n%2){
printf("%d\n",arr[n/2+1]);
}
else{
int sum = (arr[n/2]+arr[n/2+1]);
if(sum%2){
printf("%.1f\n",sum/2.);
}
else{
printf("%d\n",sum/2);
}
}
}
return 0;
}