我可以在java中增加堆栈和堆吗?我在用BlueJ。
========
编辑:
以下是代码:
// ***** Quick-Sort Method *****
public static void quickSort(int[] data, int first, int n)
{
int p, n1, n2;
if(n > 1)
{
p = partition(data, first, n);
n1 = p - first;
n2 = n - n1 - 1;
quickSort(data, first, n1);
quickSort(data, p+1, n2);
}
}
// ***** PRIVATE HELPER FUNCTIONS *****
public static void quickSort(int[] data)
{
quickSort(data, 0, data.length);
}
private static int partition(int[] A, int first, int n )
{
int right = first + n - 1;
int ls = first;
int pivot = A[first];
for(int i = first+1; i <= right; i++)
{
if(A[i] <= pivot)
// Move items smaller than pivot only, to location that would be at left of pivot
{
ls++;
swap(A, i, ls);
}
}
swap(A, first, ls);
return ls;
}
private static void swap(int[] data, int pos1, int pos2)
{
int temp = data[pos1];
data[pos1] = data[pos2];
data[pos2] = temp;
}发布于 2011-05-19 21:10:25
您可以使用以下JVM选项:
-Xms初始java堆大小-Xmx最大java堆大小-Xss设置线程堆栈大小如果要在BlueJ中默认设置这些选项,则需要执行以下操作:
bluej.defs文件bluej.vm.args属性(行)bluej.vm.args = -Xmx512m将堆大小设置为最大512 MB。我希望这能帮到你。
发布于 2011-05-19 21:12:35
堆栈溢出错误通常是由于错误的递归调用。您确定您没有为递归流指定正确的退出路径(也称为终止条件)之类的错误吗?
发布于 2011-05-19 22:01:48
在我看来,似乎是隔板被窃听了
private static int partition(int[] A, int first, int n )
{
int right = first + n-1;
int ls = first;
int pivot = A[right];//use right most for pivot
for(int i = first;i<right;i++)
{
if(A[i]<pivot){
swap(A,i,ls);
ls++;//inc after swap
}
}
swap(A,right,ls);
return ls;
}我从维基百科得到了这段代码
https://stackoverflow.com/questions/6064905
复制相似问题