找到中位数

时间:2012-10-27 23:36:43

标签: algorithm rank median

  

可能重复:
  Efficiently finding the ranks of elements in an array?

如果我有一个元素A [0到15]的数组,我知道中位数在A [8..11]范围内。如何从A [8..11]中选择A中的所有元素的中位数?它的排名是什么?我一直在阅读很多相关内容,但我找不到这个具体问题的答案。任何帮助表示赞赏。该数组基本上包含2D点,我想将这些点分成矩形区域。

3 个答案:

答案 0 :(得分:2)

通过观察这些元素的子集,您无法知道一组元素的中位数。中位数取决于整个集合中的每个元素。

答案 1 :(得分:1)

我认为你不能。中位数是在排序时将数据分成两部分的数据元素。

如果它已经排序,那通常是数据[0..15]数组的数据[7]和数据[8]的平均值。

如果它没有排序,那么在没有检查所有元素的情况下就无法找到它。

答案 2 :(得分:0)

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