代码中为什么 i 和 j 有-1 和 +1呢? 因为用的是do{}while 循环,会先执行再判断,那么两个指针会先向中间移动一位再判断,所以前面各-+1
import java.util.Scanner;
public class Main {
static int N = 100100;
static int[] f = new int[N];
static int n;
static void sort(int[] d, int l, int r) {
if (l >= r) return;
int x = d[l], i = l - 1, j = r + 1;
while (i < j) {
do {
i++;
} while (d[i] < x);
do {
j--;
} while (d[j] > x);
if (i < j) {
int t = d[i];
d[i] = d[j];
d[j] = t;
}
}
sort(d, l, j);
sort(d, j + 1, r);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 0; i < n; i++) f[i] = sc.nextInt();
sort(f, 0, n - 1);
for (int i = 0; i < n; i++) System.out.print(f[i] + " ");
}
}