Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实现快速排序方法时出现堆栈溢出_Java_Algorithm_Recursion_Stack Overflow_Quicksort - Fatal编程技术网

Java 实现快速排序方法时出现堆栈溢出

Java 实现快速排序方法时出现堆栈溢出,java,algorithm,recursion,stack-overflow,quicksort,Java,Algorithm,Recursion,Stack Overflow,Quicksort,您好,我正试图在Java中实现快速排序方法,但由于某些原因,当我只执行5个元素时,就会出现堆栈溢出错误!有什么想法吗? 我的部分代码: class QuickSort implements AbstractSort { public int partition(int[] numbers, int start, int end) { int pivot = numbers[end]; int theIndex = start; in

您好,我正试图在Java中实现快速排序方法,但由于某些原因,当我只执行5个元素时,就会出现堆栈溢出错误!有什么想法吗? 我的部分代码:

class QuickSort implements AbstractSort {
    public int partition(int[] numbers, int start, int end)
    {
        int pivot = numbers[end];
        int theIndex = start;
        int temp;
        for(int i = start; i <= end - 1; i++)
        {
            if(numbers[i] <= pivot)
            {
                temp = numbers[theIndex];
                numbers[theIndex] = numbers[i];
                numbers[i] = temp;
                theIndex++;
            }
        }
        temp = numbers[theIndex];
        numbers[theIndex] = pivot;
        numbers[end] = temp;
        return theIndex;
    }

    public void mySort(int[] numbers, int start, int end)
    {
        if(start < end)
        {
            int myIndex = partition(numbers, start, end);

            mySort(numbers, 0, myIndex-1);
            mySort(numbers, myIndex + 1, numbers.length - 1);
        }
        else
        {
            return;
        }
    }
    public void sort(int[] numbers) 
    {
        mySort(numbers, 0, numbers.length - 1);
    }
}
类快速排序实现了抽象排序{
公共整数分区(整数[]个数,整数开始,整数结束)
{
int pivot=数字[结束];
int THINDEX=开始;
内部温度;

对于(int i=start;i问题出在
mySort(number,0,myIndex-1);
我应该放start而不是0,所以正确的代码看起来像这样
mySort(number,start,myIndex-1)

你能提供一些你试图排序的例子吗?我用了9 0 8 5 6…但我已经解决了问题!我不应该在递归快速排序中传递0,而是“开始”。因此,它应该是mySort(数字,开始,我的索引-1),而不是mySort(数字,0,myIndex-1);