gpt4 book ai didi

java - 错误帮助,数组在高值时越界

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:25 24 4
gpt4 key购买 nike

当我使用中位数代码的中位数来查找 k 的给定位置时,我收到抛出的越界异常。我不确定它开始抛出错误的确切大小,但该代码适用于大小 < 75 的数组,并且当我超过数组大小 100 时,错误就会开始。

private static int mmQuickSortRecursive(Integer[] a, int k) {
if (a.length <= 10)
{
Arrays.sort(a);
return a[k-1];
}
int n = a.length;
// partition L into subsets S[i] of five elements each (n/5 subsets).
ArrayList<Integer[]> list = new ArrayList<Integer[]>();
int cnt = 0;
int m = n/5;
for( int i = 0; i < m; i++ ) {
Integer[] arr = new Integer[5];
for( int j = 0; j < 5; j++ ) {
if( cnt == n )
break;
arr[j] = a[cnt++];
}
Arrays.sort(arr);
list.add(arr);
}
Integer[] x = new Integer[m];
for (int i = 0; i< m; i++ ) {
x[i] = list.get(i)[2];
}
int v = x[0];
if(x.length > 2) {
///////// ERROR THROWN ON BELOW LINE /////////////////
v = (x.length%2 == 0)? x[x.length%2-1]: x[x.length/2];
}
// partition L into 3 parts, L1<M, L2=M, L3>M
Integer[] l = partition_left( a, v );
Integer[] r = partition_right( a, v );
if( k == l.length+1 ) {
return v;
} else if( k <= l.length ){
return mmQuickSortRecursive(l,k);
} else {
return mmQuickSortRecursive(r,k-l.length-1);
}

}

最佳答案

v = (x.length%2 == 0)? x[x.length%2-1]: x[x.length/2];

似乎是错误的。不应该是这样吗

v = (x.length%2 == 0)? x[x.length/2]: x[x.length/2-1];

关于java - 错误帮助,数组在高值时越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com