基本思路
- 把数组划分至成多个只有一个元素数组
- 将若干个数组两两合并,保证合并后是有序数组
- 重复第二步操作直到只剩下一组
时间复杂度
let mergeSort = (() => {return function mergeSort(arr) {if (arr.length <= 1) return arr;const middleIndex = Math.floor(arr.length / 2);const lArr = arr.splice(0, middleIndex);const rArr = arr;return merge(mergeSort(lArr), mergeSort(rArr));};function merge(lArr, rArr) {const arr = [];while (lArr.length && rArr.length) {lArr[0] < rArr[0] ? arr.push(lArr.shift()) : arr.push(rArr.shift());}return arr.concat(lArr, rArr);}})();
