public static int[] sort(int[] ints, int left, int right) {
//左边指针
int l = left;
//右边指针
int r = right;
//中间指针
int mid = (left + right) / 2;
//临时变量
int temp;
//左指针在右指针的前面时,进行循环
while (l < r) {
//找到一个在左边的比数组中间值小的数
while (ints[l] < ints[mid]) {
l = l + 1;
}
//找到一个在右边的比数组中间值小的数
while (ints[r] > ints[mid]) {
r = r - 1;
}
//当找到这两个数时,如果左指针大于了又指针,则停止
if (l >= r) break;
//否则进行交换
temp = ints[r];
ints[r] = ints[l];
ints[l] = temp;
}
//左递归对左边数组继续排序
if (left < r) sort(ints, left, r);
//右递归对右边数组继续排序
if (right < l) sort(ints, l, right);
//返回排好序的数组
return ints;
}