原理:在右边找到小于第一个数的数字,然后换位,在左边找到大于第一个数的数字,然后换位。
package com.yuan;
public class SortTest {
public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // array
public static void QuickSort(int left, int right, int index) {
int i, j;
int Pivot;
int Temp;
i = left;
j = right;
Pivot = a[left];
if (i < j) {
do {
while (a[i] < Pivot && i < right) {
i++;
}
while (a[j] > Pivot && j > left) {
j--;
}
if (i < j){ //exchange a[i] and a[j]
Temp = a[i];
a[i] = a[j];
a[j] = Temp;
}
} while (i < j);
if (i > j) {
Temp = a[left]; // exchange a[Left] and a[j]
a[left] = a[j];
a[j] = Temp;
}
QuickSort(left, j - 1, index); // left
QuickSort(j + 1, right, index); // right
}
}
public static void main(String[] args){
SortTest.QuickSort(0, a.length-1, a.length);
}
}