public class FastSort {
public static void main(String[] args) {
int arr[] = { 32, 2, 34, 41, 25, 5, -9 };
System.out.println("排序前:" + Arrays.toString(arr));
FastSort fastSort = new FastSort();
fastSort.fastSort(arr, 0, arr.length - 1);
System.out.println("排序后:" + Arrays.toString(arr));
}
public void fastSort(int arr[], int start, int end) {
int i = start;
int j = end;
// 选择第一个作为哨兵(基准数)
int temp = arr[start];
// 大前提
if (i < j) {
while (i < j) {
//从右向左
while (i < j && arr[j] >= temp) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
//从左向右
while (i < j && arr[i] < temp) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
//把基准数放到合适的位置
arr[i] = temp;
// 使用递归,对左半边进行排序
fastSort(arr, start, j - 1);
// 使用递归,对右边进行排序
fastSort(arr, i + 1, end);
}
}
}