package sort;
import java.util.Arrays;
public class QuickSortDemo {
// 交换数组两个下标对应的元素
static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
// 分割数组,是的q左边的元素均小于arr[q],q右边的元素均大于arr[q]
static int partition(int[] arr, int p, int r) {
int key = arr[r];
int i = p - 1;
for (int j = p; j < r; j++) {
if (arr[j] < key) {
i++;
swap(arr, i, j);
}
}
i++;
swap(arr, i, r);
return i;
}
// 快拍的递归实现
static void quickSort(int[] arr, int p, int r) {
if (p < r) {
int q = partition(arr, p, r);
quickSort(arr, p, q - 1);
quickSort(arr, q + 1, r);
}
}
public static void main(String[] args) {
int[] arr = { 7, 16, 10, 9, 14, 9, 3, 2, 4, 1 }; // 测试数据
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}