求中位数

本文介绍了一个算法问题:在一条直线上找到一个位置,使得该位置到给定点集的距离之和最小。文章提供了一段C++代码示例,展示了如何通过排序找到中位数作为最优位置。
 Optimal Point on a Line
Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u
Appoint description: 

Description

You are given n points on a line with their coordinates xi. Find the point x so the sum of distances to the given points is minimal.

Input

The first line contains integer n (1 ≤ n ≤ 3·105) — the number of points on the line.

The second line contains n integers xi ( - 109 ≤ xi ≤ 109) — the coordinates of the given n points.

Output

Print the only integer x — the position of the optimal point on the line. If there are several optimal points print the position of the leftmost one. It is guaranteed that the answer is always the integer.

Sample Input

Input
4
1 2 3 4
Output

2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<cstdio>
#include<algorithm>
using namespace std;
int a[300001];
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
		sort(a+1,a+n+1);
		int t=(n+1)/2;
		printf("%d\n",a[t]);
	}
	return 0;
 } 


在Excel中,分组中位数是指将数据集分成若干个小组,然后分别计算每个小组的中位数。在Excel中可以使用数据透视表或者函数来实现分组中位数的功能。以下是使用数据透视表进行分组中位数的基本步骤: 1. 首先,选择包含你想要进行分组和中位数的数据区域。 2. 然后,点击“插入”菜单中的“数据透视表”选项。 3. 在弹出的创建透视表对话框中,设置好数据透视表的位置,可以选择新工作表或现有的工作表。 4. 在数据透视表字段列表中,将分组的字段拖入到“行”区域,将需要计算中位数的数值字段拖入到“值”区域。 5. 在“值”区域中,右键点击数值字段,选择“值字段设置”。 6. 在弹出的对话框中,可以选择不同的统计方法,但Excel标准版的“值字段设置”中并没有直接计算中位数的选项。这时,你可以使用一些特定的技巧来近似中位数,比如使用SUM函数结合IF语句等。 7. 但是,如果你想直接计算中位数,可能需要使用一些特殊的函数或方法,如“PERCENTILE.INC”函数,该函数可以计算出一组数据的百分位数,当中位数位置是0.5时,可以用它来计算中位数。 请注意,Excel的标准版并不直接支持通过数据透视表计算中位数,可能需要借助其他函数或者在某些版本(如Excel 365)中使用更高级的数据透视表功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值