QuickSort
1 public class QuickSort { 2 Random rand = new Random(); 3 public int[] quickSort(int[] array) { 4 if (array == null || array.length = 0) { 5 return array; 6 } 7 quickSort(int[] array,0, array.length -1) 8 return array; 9 } 10 private void quickSort(int[] array, int left, int right) { 11 if (left >= right){ 12 return; 13 } 14 int pivot = partition(array, left, right); 15 quickSort(array, left, pivot - 1); 16 quickSort(array, pivot + 1, right); 17 } 18 private void partition(int[] array, int left, int right){ 19 int pivotIndex = left + rand.nextInt(right - left)/2; 20 int pivot = array[pivotIndex]; 21 swap(array, pivot, pivotIndex); 22 int leftIndex = left; 23 int rightIndex = right -1; 24 while (leftIndex >= rightIndex){ 25 if (array[leftIndex] < pivot){ 26 leftIndex++; 27 } else if (array[rightIndex] > pivot){ 28 rightIndex--; 29 } else { 30 swap(array, leftIndex, rightIndex); 31 } 32 } 33 sawap(array, leftIndex, pivot); 34 return leftIndex; 35 } 36 37 private void swap(int[] array, int left, int right){ 38 int temp = array[left]; 39 array[left] = array[right]; 40 array[right] = temp; 41 } 42 } 43 44