“main”java.lang.StackOverflower用于给定算法分析
我知道有人问了我很多问题,但我无法解决我的问题 我试图获得时间复杂度,但我得到以下错误: 主线程java.lang.StackOverflowerr中出现异常 在MedianAlgorithm2.选择MedianAlgorithm2.java:22 当我传递一个大于100000的数组时 递归选择方法如下:“main”java.lang.StackOverflower用于给定算法分析,java,exception,stack-overflow,Java,Exception,Stack Overflow,我知道有人问了我很多问题,但我无法解决我的问题 我试图获得时间复杂度,但我得到以下错误: 主线程java.lang.StackOverflowerr中出现异常 在MedianAlgorithm2.选择MedianAlgorithm2.java:22 当我传递一个大于100000的数组时 递归选择方法如下: public static int Select(int[] A, int l, int m, long h) { int pos = Partition(A, l, h);
public static int Select(int[] A, int l, int m, long h) {
int pos = Partition(A, l, h);
if (pos == m) {
return A[pos];
}
if (pos > m) {
return Select(A, l, m, pos - 1);
}
if (pos < m) {
return Select(A, pos + 1, m, h); // this is line 22 mentiond in exception
}
return 0;
}
public static int Partition(int[] A, int l, long h) {
int pivotval = A[l];
int pivotloc = l;
for (int j = l+1; j <= h; j++) {
if (A[j] < pivotval) {
pivotloc = pivotloc + 1;
int temp = A[pivotloc];
A[pivotloc] = A[j];
A[j] = temp;
}
}
int temp = A[l];
A[l] = A[pivotloc];
A[pivotloc] = temp;
return pivotloc;
}
我已将h从int改为long,但仍有一个错误
谢谢。您的JVM内存不足。你只需要分配更多 StackOverflowerr?因为内存不足?请解释您的推理。如果在选择l和h的初始调用中,l和h都小于m或都大于m,会发生什么情况?分区是否。。。处理得好吗?另一方面,您应该花一些时间研究java命名标准以及方法和变量的建议。您还需要发布分区代码。