[java] 统计计算


1 Answers

把所有的数字放在一个列表中,对列表进行排序,然后取中间值(或两个中间值的平均值)。 没有必要的计算

Question

是否有任何内置的库,我可以用来计算在Java中位数?

我正在为其他统计函数使用apache.commons.math,但中位数无处可寻。

谢谢,




获取值到一个List对象。 我们假设这些值是整数,这个列表被称为“值”。 然后

List<Integer> values;
... populate values ...
Collections.sort(values);
int median;
int midpoint=values.size()/2;
if (values.size()%2==1)
  median=values.get(midpoint+1).intValue();
else
  median=(values.get(midpoint).intValue()+values.get(midpoint+1).intValue())/2;

如果数值很大,比如在数百甚至更多,那么使用mod-2可能在技术上是正确的,但是是多余的。

也许有一个更有效的方法来做到这一点 - 排序是很大的列表很慢 - 但这将工作。

哦,你真的应该检查一个零条目列表。 也许我错过了其他边界条件。




Related