题解 | #排序# 复习一万遍的快排
排序
https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * @param arr int整型一维数组 待排序的数组 * @return int整型一维数组 */ public int[] MySort (int[] arr) { // write code here quickSort(arr, 0, arr.length - 1); return arr; } public void quickSort(int []arr, int left, int right){ if(left >= right){ return; } int index = partition(arr, left, right); quickSort(arr, left, index - 1); quickSort(arr, index + 1, right); } public int partition(int[] arr, int left, int right){ int pivot = arr[left]; int l = left, r = right; while(l < r){ while(l < r && arr[r] >= pivot){ r--; } while(l < r && arr[l] <= pivot){ l++; } if(l < r){ int tmp = arr[l]; arr[l] = arr[r]; arr[r] = tmp; } } // l == r arr[left] = arr[l]; arr[l] = pivot; return l; } }