0

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

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;
} 
4

1 回答 1

1

else您在in上缺少花括号recursiveQuickSort,因此无条件执行递归调用。

添加花括号来解决这个问题:

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 { // <<== Here
        pivotPosition =partition(start, end);
        recursiveQuickSort(start, pivotPosition-1);
        recursiveQuickSort(pivotPosition+1, end);
    }        // <<== Here
}
于 2013-10-08T02:48:14.567 回答