1. 程式人生 > >Javascript 排序算法(轉)

Javascript 排序算法(轉)

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 排序算法(轉)