【发布时间】:2018-05-31 17:34:23
【问题描述】:
如果我尝试使用 numbers.length n = 100.000 (“.” 只是为了便于阅读)并且数字是逆序的代码,例如 100.000 99.999 99.998 ......这正常吗?它适用于较小的 n,例如 10.000。
private void quickSort(int[] numbers, int l, int r) {
if (l < r) {
int p = numbers[r];
int i = l - 1;
int j = r;
do {
do {
i++;
} while (numbers[i] < p);
do {
j--;
} while (j >= l && numbers[j] > p);
if (i < j) {
swap(numbers, i, j);
}
} while (i < j);
swap(numbers, i, r);
quickSort(numbers, l, i - 1);
quickSort(numbers, i + 1, r);
}
}
【问题讨论】:
-
我猜你超出了递归深度——即使这不应该发生在对数深度上......
-
你总是以最右边的元素为轴心。当输入已经排序时,这是一个糟糕的选择。
-
感谢 Wumpus Q。Wumbley 就是这样,如果数字是随机的,没问题!
标签: java stack-overflow quicksort