/**
* 快速排序。
* @author Bright Lee
*/
public class QuitSort {
public static void sort(int[] a) {
sort(a, 0, a.length - 1);
}
private static void sort(int[] a, int beginIndex, int endIndex) {
if (endIndex <= beginIndex) {
return;
}
int index = partition(a, beginIndex, endIndex);
sort(a, beginIndex, index - 1);
sort(a, index + 1, endIndex);
}
private static int partition(int[] a, int beginIndex, int endIndex) {
int key = a[endIndex];
int i = beginIndex - 1;
for (int j = beginIndex; j < endIndex; j++) {
if (a[j] <= key) {
i++;
exchange(a, i, j);
}
}
i++;
exchange(a, i, endIndex);
return i;
}
private static void exchange(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static void main(String[] args) {
int[] a = {2, 5, 3, 4, 1, 0};
sort(a);
for (int i = 0; i < a.length; i++) {
int v = a[i];
System.out.println(v);
}
}
}