快速排序

java實現(xiàn)

public class QuickSort {

    public static void quickSort(int[] a, int low, int high) {
        if (high <= low)
            return;
        int j = partition(a, low, high); // 切分
        quickSort(a, low, j-1); // 遞歸
        quickSort(a, j+1, high); // 遞歸
    }

    // 切分
    public static int partition(int[] a, int low, int high) {
        int i = low; // 左掃描指針
        int j = high+1; // 右掃描指針
        int v = a[low]; // 切分元素

        while (true) {
            // 掃描左右,檢查掃描是否結(jié)束并交換元素
            // 當i和j相遇時主循環(huán)退出
            while (a[++i] < v) {
                if (i == high)
                    break;
            }

            while (v < a[--j]) {
                if (j == low)
                    break;
            }

            if (i >= j)
                break;

            // 交換a[i]和a[j]來保證左側(cè)元素都不大于v,右側(cè)元素都不小于v
            swap(a, i, j);
        }

        // 將v = a[j]放入正確的位置
        swap(a, low, j);
        return j;
    }

    public static void swap(int[] a, int i, int j) {
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }

    public static void main(String[] args) {
        int[] a = new int[] {2, 4, 7, 5, 11, 3, 1, 9, 7, 8, 10, 6, -1, 0};
        quickSort(a, 0, a.length-1);
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容