https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c940eed7-bcdd-4191-8656-c06f3da292eb/849589-20171015230936371-1413523412.gif

package top.ltyzqhh.Annotation;

import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
        int[] a={324,234,532,1313,1,3,553};
        System.out.println(Arrays.toString(a));
        quickSort(a,0,a.length-1);
        System.out.println(Arrays.toString(a));
    }
    public static void quickSort(int[] array,int left,int right){
        if (array==null || array.length==0) { //当数值长度为零或者为空直接跳出
           return;
        }
        if(left>right){ // 当左边缘数大于右边边缘
          return;
        }

        int key =array[left];
        int l=left;
        int r=right;
        while(l != r){
            while (array[r]>=key && l<r){ //如果没有等号就会丢失key
                    r--;
            }
            while (array[l]<=key && l<r){
                    l++;
            }
            if(l<r){ //防止乱放值,不然当l>r时候也换
             int temp=array[r];
             array[r]=array[l];
             array[l]=temp;
            }
        }
        array[left]=array[l];
        array[l]=key;
        quickSort(array,left,r-1);
        quickSort(array,l+1,right);
    }
}