Test
private static void quick_sort(int[] q, int l, int r) {
// l 和 r 是闭区间的边界
if (l >= r) return; // 如果区间内只有一个或者没有数字,就返回
int x = q[l + r >> 1]; // 分界点
int i = l - 1, j = r + 1; // i j 取了区间的两端外,是为了配合下面的 do while
while (i < j) {
do i++; while (q[i] < x);
do j--; while (q[j] > x);
if (i < j) {
int t = q[i];
q[i] = q[j];
q[j] = t;
}
}
// 向左右子区间递归
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}

浙公网安备 33010602011771号