package paixu2;
import java.util.Arrays;
public class QuickSort {
// 快速排序
public static void quickSort(int[] data, int left, int right) {
// 递归头
if (left >= right)
return;
// 把基准元素存起来
int num = data[right];
// 设置左右界,右界=基准元素的位置,挖坑填数
int i = left;
int j = right;
// i=j时候退出循环
while (i < j) {
// 循环条件要注意,i <不加可能越界,保证等i=j时候不会执行
while (i < j && data[i] < num)
i++;
if (i < j)
// 把坑里的数填好后要把j向前移动
data[j--] = data[i];
// 循环条件要注意,i <= right不加可能越界,保证等i=j时候不会执行
while (j > i && data[j] > num)
j--;
if (i < j)
// 把坑里的数填好后要把i向前移动
data[i++] = data[j];
}
// 把最后的坑填好
data[i] = num;
quickSort(data, left, i - 1);
quickSort(data, i + 1, right);
}
public static void main(String[] args) {
// int[] data = { 5, 4, 3, 2, 1 };
// int[] data = { 2, 5, 4, 8, 6, 7, 3, 9, 1 };
int[] data = { 1, 0, 2 };
// quiteSort(data, 0, data.length - 1);
// System.out.println(Arrays.toString(data));
quickSort(data, 0, data.length - 1);
System.out.println(Arrays.toString(data));
}
}