Algorithm 寻找中位数

Algorithm 寻找中位数,algorithm,rank,median,Algorithm,Rank,Median,可能重复: 如果我有一个元素数组A[0到15],我知道中位数在A[8..11]范围内。如何从[8..11]中选取A中所有元素的中位数?它的级别是什么?我读了很多关于这方面的书,但是我找不到这个具体问题的答案。感谢您的帮助。数组基本上包含2D点,我想将这些点分割成矩形区域。你不能仅仅通过观察这些元素的子集就知道一组元素的中值。中位数取决于整个集合中的每一个元素。你不能仅仅通过观察这些元素的子集就知道一组元素的中位数。中位数取决于整个集合中的每一个元素。我认为你做不到。中值是排序时将数据一分为二的

可能重复:


如果我有一个元素数组A[0到15],我知道中位数在A[8..11]范围内。如何从[8..11]中选取A中所有元素的中位数?它的级别是什么?我读了很多关于这方面的书,但是我找不到这个具体问题的答案。感谢您的帮助。数组基本上包含2D点,我想将这些点分割成矩形区域。

你不能仅仅通过观察这些元素的子集就知道一组元素的中值。中位数取决于整个集合中的每一个元素。

你不能仅仅通过观察这些元素的子集就知道一组元素的中位数。中位数取决于整个集合中的每一个元素。

我认为你做不到。中值是排序时将数据一分为二的数据元素

如果对其进行排序,则通常是数据[0..15]数组的数据[7]和数据[8]的平均值


如果没有排序,如果不检查所有元素,就无法找到它。

我想你不能。中值是排序时将数据一分为二的数据元素

如果对其进行排序,则通常是数据[0..15]数组的数据[7]和数据[8]的平均值


如果未排序,则在不检查所有元素的情况下无法找到它。

如果要将数组拆分为两组“小”值和“大”值,最简单的方法是对数组进行排序。如果不想对整个数组进行排序,则可以使用修改过的快速排序:一旦对数组进行了分区,只对包含中间值的数组的一半进行排序(除非分区结果是中间值,在这种情况下可以停止)。

如果要将数组拆分为两组“小”和“大”值,最简单的方法是对数组进行排序。如果不想对整个数组进行排序,则可以使用修改后的快速排序:对数组进行分区后,只对包含中间值的数组的一半进行排序(除非分区结果是中间值,在这种情况下可以停止排序).

我已经在这个问题上纠缠了几个月了,但我仍然无法找到一种特定的方法来知道[8..11]中位数的秩。顺便说一句,我不确定这是一个重复。这个问题问如何在不接触原始数组的情况下找到秩,但仍然能够看到所有的秩。这一个有看不到整个数组的限制。@Neil我不想扫描所有元素来找到中间值,我知道它在[8..11]中。如果我想全部扫描,我会做一般的中值搜索算法。好的,这是我一直在读的一篇论文,它让我陷入了这个问题:缓存不经意的数据结构进行正交范围搜索。本文主要阐述了如何构建CO-kd树。在第2.2.2节中,将点划分为矩形区域以形成网格后,我们必须找到中间点,以便将点划分为2个子集。在第2.2.2节中,他们解释了如何找到中位数,这与我的问题有关。我希望这能让事情变得更清楚。我已经在这个问题上纠缠了几个月了,但我仍然无法找到一种具体的方法来知道[8..11]中位数的排名。顺便说一句,我不确定这是重复的。这个问题问到了如何在不接触原始数组的情况下找到排名,但仍然能够看到所有的。这一个有看不到整个数组的限制。@Neil我不想扫描所有元素来找到中间值,我知道它在[8..11]中。如果我想全部扫描,我会做一般的中值搜索算法。好的,这是我一直在读的一篇论文,它让我陷入了这个问题:缓存不经意的数据结构进行正交范围搜索。本文主要阐述了如何构建CO-kd树。在第2.2.2节中,将点划分为矩形区域以形成网格后,我们必须找到中间点,以便将点划分为2个子集。在第2.2.2节中,他们解释了如何找到中位数,这与我的问题有关。我希望这能让事情更清楚。