如何在Java中找到未排序整数数组的中值?

如何在Java中找到未排序整数数组的中值?,java,sum,median,Java,Sum,Median,我必须找到中位数前后元素的总和,尽可能接近。例如: 输入:{4,5,99,-1,5,6} 输出:索引为3的3个元素//我们从1开始计数 public int median(int[] array) { int index = 0; int minSum; int sum = 0; int leftSum = 0; int rightSum = 0; int[] subtraction = new int[array.length]; fo

我必须找到中位数前后元素的总和,尽可能接近。例如: 输入:{4,5,99,-1,5,6} 输出:索引为3的3个元素//我们从1开始计数

public int median(int[] array) {
    int index = 0;
    int minSum;
    int sum = 0;
    int leftSum = 0;
    int rightSum = 0;
    int[] subtraction = new int[array.length];

    for (int i = 1; i < array.length; i++) {
        sum = array[i] + sum;
    }
    rightSum = sum;
    subtraction[0] = rightSum - leftSum;

    for (int i = 1; i < array.length; i++) {

        leftSum = leftSum + array[i - 1];

        rightSum = sum - array[i];
        if (leftSum > rightSum) {
            subtraction[i] = leftSum - rightSum;
        } else {
            subtraction[i] = rightSum - leftSum;
        }

    }

    minSum = subtraction[0];
    for (int i = 1; i < subtraction.length; i++) {
        if (subtraction[i] < minSum) {
            minSum = subtraction[i];
            index = i;
        }
    }

    return index + 1;
}
我知道我不必寻找最小值,但我找不到其他方法。我的问题是如何找到最接近的数字?

输出:

中位数为:5,指数为:3


您确定要/需要找到中间值吗?因为在你的例子中,中位数是5。最接近中位数的值是4或6。这就是任务。我知道代码不起作用,但我不知道如何修复它。我是说,即使你的结果与你的要求不匹配。结果不能是3,甚至不能作为索引。我不知道,因为我不明白你的确切问题是什么。为了找到中值,你5月1日对数组进行排序,然后在中间找到元素。听起来好像你在寻找平衡树,不用去排序它。左侧和右侧的总和必须尽可能接近。输出:4,5,99,-1,5,6 meddian是索引3元素99左和9右和10@P.Peev实际上,中位数表示一组已排序的数据,请参见。如果你不是在寻找集合的中值,那么考虑一下你的问题。
public class Hello {

      static int[] integerArray = {4,5,99,-1,5,6};

      public static void main(String[] args){
          List<Integer> sortedArray = new ArrayList<Integer>();

          //fill up a Collection (ArrayList<Integer>) with your array values
          for(int integer : integerArray){
              sortedArray.add(integer);
          }

          //sort the collection
          Collections.sort(sortedArray);

          //get the index of the median (middle item of a sorted list)
          int index = sortedArray.size() / 2;

          //print the median and it's index
          System.out.println("median is: " + sortedArray.get(index) + " at index: " + index);
      }
}