public static void main(String[] args) {
int[] arr = {10,9,8,7,6,5,4,3,2,1};
System.out.println(Arrays.toString(arr));
func(arr);
System.out.println(Arrays.toString(arr));
}
private static void func(int[] arr) {
int low = 0;
int high = arr.length - 1;
func(arr, low, high);
}
private static void func(int[] arr, int low, int high) {
if (low < high) {
int index = partition(arr, low, high); //index对应的值是中间值
func(arr, low, index - 1);
func(arr, index + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
//左右指针
int i = low;
int j = high;
//基准值
int x = arr[low];
//循环实现
while (i < j) {
while (arr[j] >= x && i < j) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
while (arr[i] < x && i < j) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
//使用基准值填坑
arr[i] = x;
return i;
}
快速排序
最新推荐文章于 2020-01-15 15:58:42 发布