快速排序的记忆
作者:
常台盘の超炮
,
2022-03-11 17:47:25
,
所有人可见
,
阅读 152
public static void quickSort(int[] q, int l, int r) {
//左指针小于右指针,不然就停止,后面的指针条件都由i,j来代替了而非l,r
if (l >= r) return;
//设置新的左右指针,和中心轴,注意i,j两个指针是下标,x是要直接比较的值而非下标
int x = q[l];//中心轴随便怎么赋值都行,只要是在区间内就行
//Define positions of two pointers为后面不越界的左右指针
int i = l - 1;
int j = r + 1;
//while里面两个指针do while和一个左右交换
while (i < j) {
//左指针小于右指针就循环
do i++; while (q[i] < x);
do j--; while (q[j] > x);
//do Swap,Arrays类没有sawp函数
if (i < j) {
int temp = q[i];
q[i] = q[j];
q[j] = temp;
}
}
//左子序继续快排
quickSort(q, l, j);
//右自序继续快排
quickSort(q, j + 1, r);
}