Javascript 排序算法(轉)
阿新 • • 發佈:2018-10-10
javascrip param target () scrip script pivot concat ray
// 快速排序
class QuickSort { /** * @param {*[]} originalArray * @return {*[]} */ Sort(originalArray) { // 復制 originalArray 數組防止它被修改 const array = [...originalArray]; // 如果 originalArray 數組元素個數 <=1,就不需要排序了,直接返回 if (array.length <= 1) { return array; } // 初始化左數組和右數組const leftArray = []; const rightArray = []; // 取出 originalArray 數組中的第一個元素作為中間比較值 const pivotElement = array.shift(); const centerArray = [pivotElement]; // 把 originalArray 數組拆分成左、中、右三個數組 while (array.length) { const currentElement = array.shift(); if (currentElement == pivotElement) { centerArray.push(currentElement); }else if (currentElement < pivotElement) { leftArray.push(currentElement); } else { rightArray.push(currentElement); } } // 遞歸對左、右數組進行排序 const leftArraySorted = this.Sort(leftArray); const rightArraySorted = this.Sort(rightArray); // 最後把排好序的左、中、右數組拼接起來,並返回return leftArraySorted.concat(centerArray, rightArraySorted); } }
原文地址:https://github.com/trekhleb/javascript-algorithms
Javascript 排序算法(轉)