1218: 【作】【入门】求中位数
内存限制:16 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:43
解决:17
题目描述
中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数!
比如:2 5 8 1 6,排序后的结果为1 2 5 6 8,那么这组数的中位数就是5!
再比如:8 9 1 2 3 0,排序后的结果为0 1 2 3 8 9,那么这组书的中位数就是(2+3)/2=2.5

输入
第一行:一个整数n代表有n个数
第二行:n个数的值
输出
中位数(结果保留1位小数)
样例输入 复制
5
2 5 8 1 6
样例输出 复制
5.0
提示
n=int(input())
ls=list(map(int,input().split()))
ls.sort()
if (n%2==1):
ans=ls[(n-1)//2]
else:
ans=(ls[n//2]+ls[n//2-1])/2
print('%.1f'%ans)
#include<bits/stdc++.h>
using namespace std;
int a[1010],n,m,b,ans;
int main(){
double c;
cin>>n;
for (int i=0;i<n;i++) {
cin>>a[i];
}
for (int i=0;i<n;i++)
for (int j=0;j<n-1-i;j++)
if(a[j+1]<a[j])
swap(a[j],a[j+1]);
if(n%2==0){
c=1.0*(a[n/2-1]+a[n/2])/2;
}else
c=1.0*a[n/2];
printf("%.1lf",c);
return 0;
}