1. 程式人生 > 其它 >js快速排序(中間排序)

js快速排序(中間排序)

技術標籤:前端html5csscss3javascript

JS快速排序(中間排序)

       var arr = [1, 19, 9, 9, 8, 22, 14, 52, 20, 37];
        var re = qs(arr);
        console.log(re);

        function qs(array) {
            // 如果array長度是0 1時 結束程式碼
            if (array.length <= 1) {
                return array;
            }
            // 中按 下標
            var ct = Math.floor(array.length / 2);
            // 中間下標對應的數
            var ctv = array[ct];
            // console.log(ctv);
            // 將中間數從原陣列刪除
            // console.log(arr);
            array.splice(ct, 1);
            // console.log(array);
            // 建立另個左右空陣列來儲存左右陣列元素
            var left = [];
            var right = [];

            for (var i = 0; i < array.length; i++) {
                // 元素小於中間值就給左邊
                if (array[i] < ctv) {
                    left.push(array[i]);
                } else {
                    // 元素大於中間值就給右邊
                    right.push(array[i]);

                }
            }
            // 遞迴 反覆呼叫 反覆拼接直到左右陣列長度小於等於1 結束程式碼
            var end = qs(left).concat(ctv, qs(right));
            return end;
        }