package com.zhou.sort;
import java.util.Arrays;
/**
* @author doiy
* @date 2021-5-19
*
*/
public class QuickSort {
public static void main(String[] args) {
int[] arr = new int[]{2, 3, 5, 4, 89, 6, 1};
System.out.println(Arrays.toString(arr));
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
/**
* [2, 3, 5, 4, 89, 6, 4]
* @param arr
* @param start
* @param end
*/
public static void quickSort(int[] arr,int start,int end){
if (start < end) {
// 把数组中第0个下标的数字作为标准数
int stand = arr[start];
// 记录需要排序的下标
int low = start;
int high = end;
// 循环找比标准数大的数和比标准数小的数
while (low < high) {
// 右边的数字比标准数大
while (low < high && stand <= arr[end]) {
high--;
}
//使用右边的数字替换左边的数
arr[low] = arr[high];
//如果左边的数字比标准数小
while (low < high && arr[low] <= stand) {
low++;
}
arr[high] = arr[low];
}
//把标准数赋值给低所在位置的元素
arr[low] = stand;
// 处理前面小的数
quickSort(arr, start, low);
// 处理后面大的数
quickSort(arr, low + 1, end);
}
}
}