首頁 >Java >Java入門 >java實作快速排序演算法的思路是什麼

java實作快速排序演算法的思路是什麼

王林
王林原創
2020-06-10 10:40:403224瀏覽

java實作快速排序演算法的思路是什麼

1、什麼是快速排序演算法

實際上快速排序(Quicksort)就是對冒泡排序的一種改進。

2、快速排序演算法的想法

透過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個資料變成有序序列。

(影片教學推薦:java影片教學

3、實作想法

(1)以第一個關鍵字K 1 為控制字,將[K 1 ,K 2 ,…,K n ] 分成兩個子區,使左區所有關鍵字小於等於K 1 ,右區所有關鍵字大於等於K 1 ,最後控製字居兩個子區中間的適當位置。在子區內資料尚處於無序狀態。 ;

(2)把左區當作一個整體,用(1)的步驟處理,右區進行相同的處理。 (即遞歸)

(3)重複第(1)、(2)步驟步驟,直到左區處理完畢。

4、實作程式碼

static void quicksort(int n[], int left, int right) {
        int dp;
        if (left < right) {
            dp = partition(n, left, right);
            quicksort(n, left, dp - 1);
            quicksort(n, dp + 1, right);
        }
    }
 
    static int partition(int n[], int left, int right) {
        int pivot = n[left];
        while (left < right) {
            while (left < right && n[right] >= pivot)
                right--;
            if (left < right)
                n[left++] = n[right];
            while (left < right && n[left] <= pivot)
                left++;
            if (left < right)
                n[right--] = n[left];
        }
        n[left] = pivot;
        return left;
    }

推薦教學:java入門程式

以上是java實作快速排序演算法的思路是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn