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 34 35 36 37 38 39 40 41 42
|
public class { private int[] array;
public int[] sort(int[] input) { if (input == null || input.length == 0) return input; this.array = input; quicksort(array, 0, array.length - 1); return array; }
public void quicksort(int[] nums, int begin, int end) { if (begin < end) { int pos = partition(nums, begin, end); quicksort(nums, begin, pos - 1); quicksort(nums, pos + 1, end); } }
public int partition(int[] nums, int begin, int end) { int pivot = nums[begin]; int l = begin + 1, r = end; while (l <= r) { if (nums[l] > pivot && nums[r] < pivot) { swap(nums, l++, r--); } if (nums[l] <= pivot) ++l; if (nums[r] >= pivot) --r; } swap(nums, begin, r); return r; }
public void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }
|
近期评论