编辑代码

public class lianxi {

    //根据基准值进行分区
    public  static int partition(int[] array, int arrStart, int arrEnd, int pivoPos) {
        int ItpivotValueCount = 0;
        int temp;
        int pivotValue = array[pivoPos];
       temp= array[pivoPos];
       array[pivoPos]=array[arrEnd-1];
       array[arrEnd-1]=temp;
        for (int i = arrStart; i < arrEnd-1; ++i) {
            if (array[i]<pivotValue){
                temp=array[arrStart+ItpivotValueCount];
                array[arrStart+ItpivotValueCount]=array[i];
                array[i]=temp;
                ++ItpivotValueCount;
            }
        }
        temp=array[arrEnd-1];
        array[arrEnd-1]=array[arrStart+ItpivotValueCount];
        array[arrStart+ItpivotValueCount]=temp;
        pivotValue=array[arrStart+ItpivotValueCount];
        return ItpivotValueCount+arrStart;

    }

    //返回基准值在数组里面的位置
    static int findPivotPos(int[] array, int arrStart, int arrEnd) {
        return arrStart;
    }

    public static boolean quickSort(int[] array, int arrStart, int arrEnd) {


        //终止条件
        if (arrEnd - arrStart < 2) {
            return false;
        }
        //从数组中找基准值
        int pivotPos = findPivotPos(array, arrStart, arrEnd);
        int partition = partition(array, arrStart, arrEnd, pivotPos);
        quickSort(array, arrStart, partition);
        quickSort(array,partition+1,arrEnd);
        return true;

    }
        public static void main (String[]args){
            int[] array={3,1,4,1,5,9,2,6,5,3,5};
            int partition = partition(array, 0, array.length, 2);
            quickSort(array,0,array.length);
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i]+" ");
            }
        }

}