归并排序使用了分治思想。将数组分成一个一个的小数组,一个数组只有一个元素。再合并。
function mergeSort(arr){
var length=arr.length;
if(length==1){
return arr;
}
var mid=Math.floor(length/2);
var leftarr=arr.slice(0,mid);
var rightarr=arr.slice(mid,length);
return merge(mergeSort(leftarr),mergeSort(rightarr));
};
function merge(left,right){
var l=0;
var r=0;
var res=[];
while(l<left.length&&r<right.length){
if(left[l]<right[r]){
res.push(left[l++]);
}else{
res.push(right[r++]);
}
}
while(l<left.length){
res.push(left[l++])
}
while(r<right.length){
res.push(right[r++])
}
return res;
}
var arr=[3,1,5,2,8];
console.log(mergeSort(arr));