1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public static int[] quickSort(int[] arr) { if (arr == null || arr.length < 2) return arr;
quickSort(arr, 0, arr.length - 1); return arr; }
public static void quickSort(int[] arr, int l, int r) { if (l < r) { swap(arr, l + (int) (Math.random() * (r - l + 1)), r); int mid = partition(arr, l, r); quickSort(arr, l, mid - 1); quickSort(arr, mid + 1, r); } }
public static int partition(int[] arr, int l, int r) { int i = l, j = r, tmp = arr[l]; while (i < j) { while (i < j && arr[j] >= tmp) j--; arr[i] = arr[j];
while (i < j && arr[i] < tmp) i++; arr[j] = arr[i]; } arr[i] = tmp;
return i; }
|