快速排序

主要寫一下快速排序,基本思想就是:
隨機取一個值作爲中間值,此處我們取第一個,然後按照大於中間值得數放到其右邊,小於中間值的數放到其左邊,依次下去,知道排序完成。
時間複雜度爲:O(nlogN)
空間複雜度:O(N)


public class quickSort {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] numList = {3,7,6,4,9,7,8,1,10}; 
        quick(numList);
        for(int i=0;i<numList.length;i++){
            System.out.print(numList[i]+" ");
        }

    }
    public static void quick(int[] num){
        if(num.length > 0){
            quickSort(num,0,num.length-1);
        }
    }
    public static void quickSort(int[] num,int low,int high){
         if (low < high) {
            int middle = getMiddle(num,low,high);
            quickSort(num,low,middle-1);
            quickSort(num,middle+1,high);
         }
    }
    public static int getMiddle(int[] num,int low,int high){
        int middle = num[low];
        while(low<high){
            if((low<high)&&(num[high]>=middle)){
                high--;
            }
            num[low] = num[high];
            if((low<high)&&(num[low]<=middle)){
                low++;
            }
            num[high] = num[low];
        }
        num[low] = middle;
        return low;
    }

}
發佈了144 篇原創文章 · 獲贊 24 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章