- function isArray1(arr){
- if(Object.prototype.toString.call(arr) =='[object Array]'){
- return true;
- }else{
- return false;
- }
- }
- function merge(left,right){
- var result=[];
- if(!isArray1(left)){
- left = [left];
- }
- if(!isArray1(right)){
- right = [right];
- }
- while(left.length > 0&& right.length >0){
- if(left[0]<right[0]){
- result.push(left.shift());
- }else{
- result.push(right.shift());
- }
- }
- return result.concat(left).concat(right);
- }
- function mergeSort(arr){
- var len=arr.length;
- var lim ,work=[];
- var i,j,k;
- if(len ==1){
- return arr;
- }
- for(i=0;i<len;i++){
- work.push(arr[i]);
- }
- work.push([]);
- for(lim=len;lim>1;){//lim为分组长度
- for(j=0,k=0;k<lim;j++,k=k+2){
- work[j]=merge(work[k],work[k+1]);
- }
- work[j]=[];
- lim=Math.floor((lim+1)/2);
- }
- return work[0];
- }
- var arr1 = [7,5,9,8];
- var arr2 = [7,5,9,8,3,20,6,1,2];
- console.log(mergeSort(arr1));//5,7,9,8
- console.log(mergeSort(arr2));//1,2,3,5,6,7,8,9,20
- //该片段来自于http://www.codesnippet.cn/detail/0911201513949.html
来源: http://www.codesnippet.cn/detail/0911201513949.html