我想把我的阵列分成上下两部分 但它不会工作 它只是为我打印排序 我把随机打印语句放在一起,以确保条件为真,它是
在偶数条件下,它读取if和for语句 但奇怪的是它只读取if语句
这是我的代码
public static int GetTheLowerHalfandUpperHalf(int[] array) {
int size = array.length;
int even = size%2;
if (even == 0) {
//print the lower half
for(int i=0; i==even;i++) {
int[] upper;
upper = new int[i];
System.out.println("The UPPER half is: "+Arrays.toString(upper));
System.out.println("Q3 = " +median(upper));
}
//print the upper half
for (int j=(even+1);j==size;j++) {
int[] lower;
lower=new int[j];
System.out.println("The UPPER half is: "+Arrays.toString(lower));
System.out.println("Q1 = " +median(lower));
}
} else if ((array.length % 2) != 0) {
//print the lower half
for (int i=0;i==(Q2-1);i++) {
int[] upper;
upper = new int[i];
System.out.println("The UPPER half is: "+Arrays.toString(upper));
System.out.println("Q3 = " +median(upper));
}
//print the upper half
for(int j=(Q2+1) ;j==size ;j++ ){
int[] lower;
lower=new int[j];
System.out.println("The UPPER half is: "+Arrays.toString(lower));
System.out.println("Q1 = " +median(lower));
}
}
return 0;
}
Q2是整个阵列的中位数
答案 0 :(得分:1)
替代解决方案:
int[] firstHalf = Arrays.copyOfRange(array, 0, array.length/2);
int[] secondHalf = Arrays.copyOfRange(array, array.length/2, array.length);
然后,您当然可以执行median()
方法:
int firstMedian = median(firstHalf);
请记住,您不必重新发明轮子,但您必须让车轮适合您的车。
答案 1 :(得分:0)
这不是一个好主意,因为如果你说arraylist不是一个公正的数字它会崩溃。你能解释一下你的内容吗?
答案 2 :(得分:0)
// double median(int[] arr, int start, int end)
double hiMedian = median(arr, 0, array.length / 2);
double loMedian = median(arr, array.length / 2, array.length);
请注意,建议不要在一般情况下制作阵列副本。仅仅计算范围就足够了。第一和最终指数。