递归实现快速排序
1 public static void main(String[] args) throws Exception{ 2 int a[] = {12, 13, 10, 8, 9, 21, 38, 2, 5}; 3 quickSort(a, 0, a.length-1); 4 for (int i = 0; i < a.length; i++) { 5 System.out.print(a[i] + " "); 6 } 7 } 8 9 public static void quickSort(int a[], int left, int right) { 10 if (left > right) { 11 return; 12 } 13 int i = left; 14 int j = right; 15 int temp = a[left]; 16 17 while (i != j) { 18 while (a[j] >= temp && i < j) { 19 j--; 20 } 21 while (a[i] <= temp && i < j) { 22 i++; 23 } 24 25 if (i < j) { 26 a[i] = a[i] ^ a[j]; 27 a[j] = a[i] ^ a[j]; 28 a[i] = a[i] ^ a[j]; 29 } 30 } 31 a[left] = a[i]; 32 a[i] = temp; 33 34 quickSort(a, left, i-1); 35 quickSort(a, i+1,right); 36 }
注:当a[j]大于或者等于temp时都符合条件,同理当a[i]小于或者等于temp时也符合条件,如果i只是小于,那么当i指向left位置时无法向右移动,会一直停在left的位置不动
浙公网安备 33010602011771号