快速排序
快速排序
无序数组9,10,7,0,2,4,1
图解:
public static void quickSort(int[] a, int left, int right) {
int base = a[left];
int ll = left;
int rr = right;
while (ll < rr) {
// 从后往前找,一直找到小于基准数到值
while (ll < rr && a[rr] >= base) {
rr--;
}
if (ll < rr) {
// 如果左指针仍然小于右指针,说明从后往前找到了小于基准数的值
int temp = a[rr];
a[rr] = a[ll];
a[ll] = temp;
ll++;
}
// 从前往后找,一直找到大于基准值到数
while (ll < rr && a[ll] <= base) {
ll++;
}
if (ll < rr) {
// 如果左指针仍然小于右指针,说明从前往后找到了大于基准数的值
int temp = a[rr];
a[rr] = a[ll];
a[ll] = temp;
rr--;
}
}
// 递归排序
if (left < ll)
quickSort(a, left, ll - 1);
if (ll < right)
quickSort(a, ll + 1, right);
}