以数组中的第一个元素位基准,比它小的放在他的左边,比它大的放在他的右边。然后在对左右两边的数组进行递归的调用。最后使得数组是有序的。
public static void qsort(int[] arr, int left, int right) {
if (left >= right) { //数组中只有一个元素
return;
}
int privot = arr[left];
int temp = 0;
int l = left;
int r = right;
while (l < r) {
while (l < r && arr[r] >= privot) r--;
while (l < r && arr[l] <= privot) l++;
if (l < r) {
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}
}
//l=r 左指针与右指针相遇 此时把privot的值插入到l位置
temp = arr[l];
arr[l] = arr[left];
arr[left] = temp;
//左边的递归
qsort(arr, left, l - 1);
//右边的递归
qsort(arr, l + 1, right);
}