JAVA排序之快速排序

快速排序思想是選擇一箇中軸(基礎值),選擇一個結束值,而後從結束值往前遍歷,若發現有比基礎值小,則中止遍歷,記錄當前下標;接着從起始值向前遍歷,若發現有比基礎值大,則中止遍歷,記錄下標,而後交換剛剛取得兩個下標對應的值;最後繼續遍歷,直到起始遍歷下標大於等於結束遍歷下標.最後將當前起始下標的值和中軸的值交換.這就是一趟快速排序,而後比較左邊已經比較好的比中軸值小的隊列,右邊同理.ui

public static void quickSort(int[] sort, int low, int high) {
        int i,j,base,temp;
        if(low > high) {
            return;
        }
        i = low;
        j = high;
        base = sort[low];
        while(i < j) {
            while(i < j && base <= sort[j]) {
                j--;
            }
            while(i < j && base >= sort[i]) {
                i++;
            }
            if(i < j) {
                temp = sort[j];
                sort[j] = sort[i];
                sort[i] = temp;
            }
        }
        sort[low] = sort[i];
        sort[i] = base;
        for(int ii = 0; ii <= sort.length - 1 ; ii++) {
            System.out.print(sort[ii] + " ");
        }
        System.out.println("========================");
        quickSort(sort, low, j-1);
        quickSort(sort, j+1, high);
    }排序

相關文章
相關標籤/搜索