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;
}