鲁班Java架构VIP
public static void quickSortPartition(int[] array, int left, int right) {
if (right > left) {
// 将 [left - right] 区域分成了
// [left, pivotIndex - 1] 和 [pivotIndex + 1, right] 两个
int pivotIndex = partition(array, left, right);
quickSortPartition(array, left, pivotIndex - 1);
quickSortPartition(array, pivotIndex + 1, right);
}
}
public static int partition(int[] array, int left, int right) {
// 挑选最右侧的作为基准值
int pivotValue = array[right];
int storeIndex = left;
for (int i = left; i < right; i++) {
if (array[i] <= pivotValue) {
swap(array, i, storeIndex);
storeIndex += 1;
}
}
swap(array, storeIndex, right);
return storeIndex;
}
private static void swap(int[] x, int a, int b) {
int t = x[a];
x[a] = x[b];
x[b] = t;
}
