import java.util.*; public class Solution { public int[] MySort (int[] arr) { // 预处理 if (arr == null || arr.length == 0) return arr; // 对数组进行快速排序 quickSort(arr, 0, arr.length-1); return arr; } // 快速排序 public static void quickSort(int[] arr, int start, int end) { // 预处理 if (start >= end) return; // 划分 int pivotPos = partition(arr, start, end); // 递归处理左右子数组 quickSort(arr, start, pivotPos-1); // 划分左子数组 quickSort(arr, pivotPos+1, end); // 划分右子数组 } // 用首元素将序列划分成左右两个部分 public static int partition(int[] arr, int start, int end) { // 取首元素作为中枢 int pivot = arr[start]; // 确定中枢的最终位置 while (start < end) { // 小于中枢的移动到左侧 while (start < end && arr[end] >= pivot) end--; arr[start] = arr[end]; // 大于中枢的移动到右侧 while (start < end && arr[start] <= pivot) start++; arr[end] = arr[start]; } // 循环结束,此时start == end,此位置即为中枢的最终位置 arr[start] = pivot; // 返回中枢的最终位置 return start; } }