public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
// 接受数组长度
int n = sc.nextInt();
// 创建数组
int[] arr = new int[n];
// 接受数组元素
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int[] sortedArray = quickSort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
System.out.print(sortedArray[i] + " ");
}
}
}
/**
* @description 快速排序
* @param arr
* @param left(从0开始)
* @param right(到数组长度-1结束)
* @return int[]
*/
public static int[] quickSort(int[] arr, int left, int right) {
if (left < right) {
// 分区
int partitionIndex = partition(arr, left, right);
// 左分区排序
quickSort(arr, left, partitionIndex - 1);
// 右分区排序
quickSort(arr, partitionIndex + 1, right);
}
return arr;
}
/**
* @description 快速排序的分区操作
* @param arr
* @param left(从0开始)
* @param right(到数组长度-1结束)
* @return int
*/
private static int partition(int[] arr, int left, int right) {
// 设定基准值(pivot)
int pivot = left;
int index = pivot + 1;
for (int i = index; i <= right; i++) {
if (arr[i] < arr[pivot]) {
swap(arr, i, index);
index++;
}
}
swap(arr, pivot, index - 1);
return index - 1;
}
// 根据index交换数组中的两个元素
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}