Java发现中位数的麻烦

时间:2015-02-23 05:31:14

标签: java

无法从随机值中找到中位数。假设您输入31 62 49 76 56 54 4 7 13 59之类的数字。两个中间值为49 & 54。由于它是偶数,你将取两个值并除以2得出答案51.5。我没有得到正确的答案,我尝试了几种不同的方法。

我想完全理解我的程序会很长时间在这里发布,所以我在这里创建了一个指向该文件的链接:Click here to view。如果您知道我在哪里出错,请告诉我。

1 个答案:

答案 0 :(得分:0)

根据Wikipedia

  

通过将所有观察值从最低值排列到最高值并选择中间值,可以找到有限数字列表的中位数。如果有偶数个观察值,则没有单个中间值;然后通常将中位数定义为两个中间值的平均值。

因此,如果您使用int的数组:

public static double median(int[] original) {
    int[] array = Arrays.copyOf(original, original.length);
    Arrays.sort(array);
    int central = array.length / 2;
    if (array.length % 2 == 0) {
        return (array[central - 1] + array[central]) / 2.0;
    }
    return array[central];
}