快速排序的實現(java)

java下 快速排序的實現

package quicksort;

public class myquicksort {
    public static void quicksort(int[] array,int start,int end){
        int q=0; //存儲   切分的位置  左邊的都比這個數大,右邊的都比這個位置小
        if(start<end){
            System.out.println(" start :"+start+"end :"+end);
            q=partition(array,start,end);
            quicksort(array,start,q-1);
            quicksort(array,q,end);
        }
    }

    public static int partition(int[] array,int start,int end){
        int index=start-1;
        int x=array[end];
        int j=0;
        ArrayUtils.PrintArray(array);
        for(j=start;j<end;j++){
            if(array[j]<=x){
                index++;
                ArrayUtils.exchangeElements(array,j,index);
            }
        }
        //System.out.println("index+1: "+(index+1) +"end: "+(end));
        System.out.println("index:"+index);
        ArrayUtils.exchangeElements(array,index+1 ,end );
        return index+1;
    }




    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] array={5,2,4,6,1,3,22,36};
        System.out.println("Before sort:");
        ArrayUtils.PrintArray(array);
        System.out.println("array.length-1"+(array.length));
        quicksort(array,0,array.length-1);
        System.out.println("after sort:");
        ArrayUtils.PrintArray(array);
    }

}

其中 partition這個函數實現了
以array 數組中 end 爲標杆,比他小的都在他的左邊,比他大得都在他的右邊。

package quicksort;

public class ArrayUtils {
    public static void PrintArray(int[] array){
        System.out.print("{");
        for(int i=0;i<array.length;i++){
            System.out.print(array[i]);
            if(i<array.length -1){
                System.out.print(",");
            }


        }System.out.print("}");
    }

    public static void exchangeElements(int[] array,int index1,int index2){
        int temp=array[index1];
        array[index1]=array[index2];
        array[index2]=temp;
    }   

}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章