// 归并排序主要思想是分治 O(nlogn),栈的深度就是Log(n),空间复杂度是O(n),实践复杂度是nlog(n)因为是先分后合
function mergeSort(arr) {
if(arr.length<2) return arr;
let mid=Math.floor(arr.length/2);
let left=arr.slice(0,mid);
let right=arr.slice(mid);
return merge(mergeSort(left),mergeSort(right));
}
function merge(left,right) {
let 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;
}