思路:
- 挖坑填数,原理视频链接
public static void quickSort(int[] data, int start, int end) {
if (data == null || start >= end) return;
int i = start, j = end;
//左边第一元素做界点,左边有坑
int pivotKey = data[start];
while (i < j) {
//左边有坑,
// 当右下标的元素比边界值小时,挖出此元素到左边坑,
// 左下表右移一位
while (i < j && data[j] >= pivotKey) j--;
if (i < j) data[i++] = data[j];
//右边有坑,
//当左下标的元素比边界值小时,挖出此元素到右边坑
//右下表左移一位
while (i < j && data[i] <= pivotKey) i++;
if (i < j) data[j--] = data[i];
}
//递归
data[i] = pivotKey;
quickSort(data, start, i - 1);
quickSort(data, i + 1, end);
}