- 将元素对半分割,递归分割子元素,直到剩下一个子元素
- 递归合并分割的子元素,合并成有序数组
-
代码
```javascript function mergeSort(arr) { if (arr.length < 2) { return arr; }
const middle = Math.ceil(arr.length / 2); const left = arr.slice(0, middle); const right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right)); }
function merge(left, right) { const result = [];
while(left.length && right.length) { if (left[0] <= right[0]) { result.push(left.shift()); } else { result.push(right.shift()); } }
while(left.length) { result.push(left.shift()); }
while(right.length) { result.push(right.shift()); }
return result;
}
```