Java堆栈溢出与递归

时间:2013-10-08 02:43:25

标签: java recursion stack-overflow quicksort

所以我正在编写一个程序,它将使用quicksort对字符串的自定义数组列表进行排序。 (我必须自定义编写一个类的所有代码)。但是,我不断收到堆栈溢出错误,我不知道为什么。 (我是初学者,所以放轻松)。

void quickSort () {
    recursiveQuickSort(0, numElements-1);
}
// Recursive quicksort
public void recursiveQuickSort(int start, int end) {
    // if size 1 or less, don't need to do anything
    int pivotPosition = 0;
    if (start <=1 || end <= 1 ) {

    } else 
        pivotPosition =partition(start, end);
        recursiveQuickSort(start, pivotPosition-1);
        recursiveQuickSort(pivotPosition+1, end);
}
static int partition(int start, int end) {
    int pivot = end;
    end--;
    while(true) {
        while (true) {
            if (end < start) {
                break;
            }
            if (end < pivot) {
                end = end;
                break;
            } else end --;
        }
        while(true) {
            if (end < start) {
                break;
            }
            if (start > pivot) {
                start = start;
                break;
            } else start++;
        }
        if(end < start) {
            break;
        }
        else
            swap(start, end);
    }
             swap(end+1, pivot);
     return end + 1;
} 

1 个答案:

答案 0 :(得分:1)

您在else的{​​{1}}上缺少大括号,因此无条件执行递归调用。

添加花括号来解决此问题:

recursiveQuickSort