首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用quickSort时得到堆栈溢出错误,可以增加堆栈和堆吗?

在使用quickSort时得到堆栈溢出错误,可以增加堆栈和堆吗?
EN

Stack Overflow用户
提问于 2011-05-19 21:08:01
回答 4查看 1.7K关注 0票数 2

我可以在java中增加堆栈和堆吗?我在用BlueJ。

========

编辑:

以下是代码:

代码语言:javascript
复制
// ***** 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;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-19 21:10:25

您可以使用以下JVM选项:

  • -Xms初始java堆大小
  • -Xmx最大java堆大小
  • -Xss设置线程堆栈大小

如果要在BlueJ中默认设置这些选项,则需要执行以下操作:

  • 查找bluej.defs文件
  • 在该文件中查找bluej.vm.args属性(行)
  • 在该行中添加您想要的选项,即bluej.vm.args = -Xmx512m将堆大小设置为最大512 MB。

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2011-05-19 21:12:35

堆栈溢出错误通常是由于错误的递归调用。您确定您没有为递归流指定正确的退出路径(也称为终止条件)之类的错误吗?

票数 1
EN

Stack Overflow用户

发布于 2011-05-19 22:01:48

在我看来,似乎是隔板被窃听了

代码语言:javascript
复制
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;
}

我从维基百科得到了这段代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6064905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档