js快速排序(中間排序)
阿新 • • 發佈:2021-02-08
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; }