算法|快速排序

/** * @Author: Kerven Han * @Date: * @Describe: */ public class QuickSort {public static void main(String[] args) {int[] arr = {2,3,4,1,22,90,45,12,89,12,99,33}; sort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } }public static int partition(int[] arr, int left, int right) { int pivotKey = arr[left]; // 这里的两个while循环我们需要明白它们的含义 //这个是来空值左右两边交替扫描的, while(left < right) { //这个是来控制左边或者右边的指针移动的 while(left < right && arr[right] >= pivotKey) { right --; } arr[left] = arr[right]; //把小的移动到左边 while(left < right && arr[left] <= pivotKey) {left ++; } arr[right] = arr[left]; //把大的移动到右边 }// 把两者相遇的点和基准值互换,是把基准值赋给了相遇的那个位置 arr[left] = pivotKey; //最后把pivot赋值到中间//返回的是两者相遇的那个点 return left; }/** * 递归划分子序列 * @param arr * @param left * @param right */ public static void quickSort(int[] arr, int left, int right) { if(left >= right) {return ; } int pivotPos = partition(arr, left, right); quickSort(arr, left, pivotPos-1); quickSort(arr, pivotPos+1, right); }public static void sort(int[] arr) { if(arr == null || arr.length == 0) {return ; } quickSort(arr, 0, arr.length-1); }}

也可也参考下别人的:
【算法|快速排序】https://blog.csdn.net/nrsc272420199/article/details/82587933?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.channel_param

    推荐阅读