public static void quickSort(int[] arry,int L,int R){ if (arry == null || arry.length < 2){ return; } if (L < R){ //随机快排 swap(arry,L + (int) ((R - L + 1) * Math.random()),R); //随机选择一个数与数组最后一位进行交换 int[] p = partition(arry,L,R); quickSort(arry,L,p[0] - 1); quickSort(arry,p[1] + 1,R); } } public static int[] partition(int[] arry,int L,int R){ int less = L - 1; int more = R + 1; int cur = L; while (cur < more){ if (arry[cur] < arry[R]){ swap(arry,++less,cur++); } else if (arry[cur] > arry[R]){ swap(arry,--more,cur); } else { cur++; } } return new int[]{ less + 1 , more - 1 }; } public static void swap(int[] arry,int i,int j){ int temp = arry[i]; arry[i] = arry[j]; arry[j] = temp; } public static void main(String[] args) { int[] arry = new int[]{1,7,6,3,5,2,9,6,8}; quickSort(arry,0,arry.length - 1); for (int i = 0; i < arry.length; i++) { System.out.print(arry[i] + " "); } System.out.println(); }
随机快排算法
最新推荐文章于 2023-12-07 14:48:37 发布