public class QuicklySort {
    public static void main(String[] args) {

        int[] arr={6,1,2,7,9,3,4,5,10,8};
        quickSort(arr,0, arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    public  static void quickSort(int arr[],int i,int j){
        int start=i;
        int end=j;
        if(start>end){//递归的出口
            return;
        }
        int baseNum=arr[i];
        while (start!=end) {
            while(true){
                if(end<=start || arr[end]<baseNum){
                    break;
                }
                end--;
            }
            while(true){
                if(end<=start || arr[start]>baseNum){
                    break;
                }
               start++;
            }
            int temp=arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }
        int temp=arr[i];
        arr[i]=arr[start];
        arr[start]=temp;
        //确定6左边的范围,重复;
        quickSort(arr,i,start-1);
        //确定6右边的范围,重复
        quickSort(arr,start+1, j);
    }
}
//从小到大先移动end,从大到小排先移动start
//先移动end会start和end会停在比基准值小的数上,相反会停在比基准值大的数上;
//if(start>end){//递归的出口
            return;
        }
		必须在int baseNum=arr[i];之前;
		否则会产生越界问题