列表

详情


NC214022. 中位数

描述

今天又是开心的一天,WYJ决定吃一顿好的(划掉)和LK一起van游戏
游戏规则如下:
WYJ给出N个数字,LK要找出N个数字的中位数。
要是能找出中位数,WYJ就请LK吃饭,否则LK就要请WYJ吃饭,但是LK从小不好好学习,不知道中位数是什么,并且LK很小气,一听到要请吃饭,立马抓住在一旁吃瓜的你。
现在请你来和WYJ一起van游戏

输入描述

第一行输入一个数N用来表示数组的长度(N<=100)
第二行输入N个数字,并以一个空格隔开

输出描述

输出N个数字的中位数,若为小数则保留两位小数,若为整数则直接输出

示例1

输入:

5
1 4 5 3 2

输出:

3

示例2

输入:

8
1 6 4 7 8 2 3 5

输出:

4.50

示例3

输入:

8
4 1 6 5 8 9 16 10

输出:

7

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 2ms, 内存消耗: 372K, 提交时间: 2020-11-24 18:45:05

#include<stdio.h>
int main()
{	int n,i,j,s,b;
	scanf("%d",&n);
	int a[n];
	for(i=0;i<n;i++)
	{scanf("%d",&a[i]);
	}
	getchar();
	for(i=1;i<n;i++)
	{	for(j=0;j<n-i;j++)
		{if(a[j]>a[j+1])
		{s=a[j+1];
		a[j+1]=a[j] ;
		a[j]=s;
		}
		
		}
	}
	if(n%2==0)
	{if((a[n/2]+a[(n/2)-1])%2==0)
	{int avg=(a[n/2]+a[(n/2)-1])/2;
	printf("%d",avg);
	}
	else{float bvg=(a[n/2]+a[(n/2)-1])/(float)2;
	printf("%.2f",bvg);
	}
	
	
	}
	else
	{
	b=(n+1)/2-1        ;
	printf("%d",a[b]);
	}
	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 532K, 提交时间: 2023-07-18 10:58:55

#include<bits/stdc++.h>
using namespace std;
 int a[105];
int main()
{
    int i,n;
    cin>>n;
    for(i=1;i<=n;i++)
    {
       scanf("%d",&a[i]);
    }
    sort(a+1,a+1+n);
    if(n%2==0)
    {
        if((a[n/2]+a[n/2+1])%2==0)
            printf("%.d",(a[n/2]+a[n/2+1])/2);
        else printf("%.2lf",(a[n/2]+a[n/2+1])/2.0);
    }
    else printf("%d",a[n/2+1]);
    return 0;
 }

Python3 解法, 执行用时: 42ms, 内存消耗: 4544K, 提交时间: 2023-01-21 15:03:20

n=int(input())
l=list(map(int,input().split()))
l.sort()
if n%2==1:
    print(l[n//2])
else:
    x=n//2
    ke=(l[x]+l[x-1])/2
    if ke!=int(ke):
        print("%.2f"%ke)
    else:
        print(int(ke))

上一题