簡體   English   中英

當我實現Quicksort方法時堆棧溢出

[英]Stack overflow when I implement Quicksort method

您好,我正在嘗試用Java實現Quicksort方法,但是由於某些原因,當我只用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);
    }
}

問題出在mySort(numbers, 0, myIndex-1); 我應該以start而不是0開頭,因此正確的代碼如下所示: mySort(numbers, start, myIndex-1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM