如何在Java中找到未排序整数数组的中值?
我必须找到中位数前后元素的总和,尽可能接近。例如: 输入:{4,5,99,-1,5,6} 输出:索引为3的3个元素//我们从1开始计数如何在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
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);
}
}