问题标题: 酷町堂:1153 数据分析(median)

1
0
已解决
谭迪元
谭迪元
资深光能
资深光能

题目描述 Description

在数据分析中,除了用平均数表示一系列数据的平均水平外,还可以用中位数来表示。中位数的定义是:中位数就是在一连串已由小到大排序的数字中,排在中间的那一个数。例如:在 {1,3,4,9,11}中4就是中位数。若有偶数个数字,我们定义中位数就是位于中间的那2个数的和除以2(而且只取整数部分)。例如:在{1,2,3,6,7,8}中{3,6}是位于中间的2个数,所以中位数就是(3+6)/2=4。

输入描述 Input Description

输入第一行为一个整数N(N<=30000),表示有N个整数。 从第二行开始,有N个整数(每个整数都不超过1000000000),两个数之间用空格隔开。

输出描述 Output Description

输出仅一行,输出这些数的中位数。

样例输入 Sample Input

6 1 3 4 2 3 27

样例输出 Sample Output

3

#include<bits/stdc++.h>
using namespace std;
int n,a[30005];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	if(n%2==0){
		cout<<(a[(n-1)/2]+a[(n/2)])/2;
	}
	else{
		cout<<a[(n-1)/2];
	}
	return 0;
}

样例都过不了

谭迪元在2021-11-17 20:08:51追加了内容

dingdingdingdingdingdingdingdingdingdingdingdingdingdingdingdingdingding


0
已采纳
姜宇轩
姜宇轩
中级天翼
中级天翼
头文件
标准命名空间

定义变量

主函数:

    输入

    循环输入数组数

    从小到大排序

    如果单数
        输出中位数a[n/2+1]
    不是
        输出(a[n/2]+a[n/2+1])/2

    结束

望采纳!!!

0
李牧晓
李牧晓
中级天翼
中级天翼
正常输入数量的变量;
循环输入;//我用数组做的
数组最简排序;
如果数量是单数?
    输出;//这里给出公式:数量变量/2+1(数组里)
否则
    输出;//这里给出公式:(数组名[数量变量/2]+数组名[数量变量/2+1])/2

愿你AC!

@酷町扫地僧 

申精~

我要回答