将数组一分为二,直至只有一个元素
function mergeSort(arr){
let len=arr.length;
if(len<2){
return arr;
}
var middle=Math.floor(len/2),
left=arr.slice(0,middle),
right=arr.slice(middle);
return merge(mergeSort(left),mergeSort(right));
}
function merge(left,right){
var result=[],
len1=left.length,
len2=right.length,
i=0,
j=0;
while(i<len1&&j<len2){
if(left[i]<=right[j]){
result.push(left[i]);
i++;
}else{
result.push(right[j]);
j++
}
}
while(i<len1){
result.push(left[i]);
i++;
}
while(j<len2){
result.push(right[j]);
j++;
}
return result;
}