标签:
1 public void sort(int[] arr) { 2 quickSort(arr, 0, arr.length - 1); 3 } 4 5 private static void quickSort(int[] arr, int left, int right){ 6 int t; 7 int ltemp = left; 8 int rtemp = right; 9 // 分界值 10 int fIndex = arr[(left + right)/ 2]; 11 while(ltemp < rtemp) { 12 // 从左侧开始查找比分界值大的数 13 while(arr[ltemp] < fIndex) { 14 // 元素小于分界值,继续查找 15 ++ltemp; 16 } 17 // 从右侧开始查找比分界值小的数 18 while(arr[rtemp] > fIndex) { 19 // 元素大于分界值,继续查找 20 --rtemp; 21 } 22 // 如果查到的比分界值大的数的下标小于等于比分界值小的数的下标,则进行交换 23 if(ltemp <= rtemp) { 24 t = arr[ltemp]; 25 arr[ltemp] = arr[rtemp]; 26 arr[rtemp] = t; 27 --rtemp; 28 ++ltemp; 29 } 30 if(ltemp == rtemp) { 31 ltemp++; 32 } 33 System.out.println( Arrays.toString(arr)); 34 if(left < rtemp) { 35 quickSort(arr, left, ltemp - 1); 36 } 37 if(ltemp < right) { 38 quickSort(arr, rtemp + 1, right); 39 } 40 } 41 }
标签:
原文地址:http://www.cnblogs.com/LeslieXia/p/5815069.html