为什么不打印数组的正确中位数?

时间:2019-03-03 20:05:47

标签: java algorithm debugging

由于数组的偶数长度,我们必须加12 + 8 = 20,然后除以2。 20/2 =10。但是为什么要在控制台中打印出30?即使我排除了Arrays.sort(a);,它仍然可以打印30。

应该打印10。我在做什么错?

public static void solution(int[] a) {
    Arrays.sort(a);
    int median = 0;

    if(a.length % 2 != 0) {
        median = a[(a.length - 1) / 2];
    } else {
        median = (a[(a.length / 2)] + a[(a.length - 1 / 2) - 1]) / 2;
    } 
    System.out.println(median);
}

public static void main(String args[]) {
    int[] a = {5,9,8,12,19,48};
    solution(a);
}

1 个答案:

答案 0 :(得分:1)

应为median = (a[(a.length / 2) - 1] + a[(a.length / 2)]) / 2;